java核心技术之IO流(一)File类
最后更新于:2022-04-01 09:58:39
### File类的说明
File类是java.io包中对应着硬盘中的一个文件或网络中的一个资源,可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat等类型),也可以表示一个文件目录。
File类的对象是与平台无关的,File类针对文件或文件目录,只能进行新建,删除,重命名,上层目录等操作,如果涉及到访问文件的内容,File是无能为力,只能使用IO流来实现。我们常把File类的对象做为形参传递给相应的IO流的构造方法中。
### 关键方法
构造方法:
~~~
File(String path)
使用文件路径名path创建一个File对象
File(URI uri)
使用一个文件的uri创建一个File对象
File(File dir, String name)
使用一父文件dir和文件名name创建一个File对象
File(String dirPath, String name)
使用父文件名dirPath和文件名name创建一个File对象
~~~
常用方法
| 方法名 | 说明 |
|-----|-----|
| getName() | 获取文件名 |
| getAbsolutePath() | 获取文件绝对路径 |
| getParent() | 获取文件的父路径名 |
| lastModified() | 获取最后修改时间 |
| length() | 获取文件大小 |
| canRead() | 获取文件是否可读 |
| canWrite() | 获取文件是否可写 |
| mkdir() | 创建文件夹 |
| exists() | 文件是否存在 |
| createNewFile() | 创建一个新文件 |
关键变量:
separator 文件路径的分割符(“\”),这个变量可以更好的支持跨平台的文件名表示
### File的Demo代码
这个Demo有三个方法:
BaseInfo()—–显示文件的基本信息,如名字,大小,路径,修改时间等等。
showFiles(File file)—–显示文件目录下的文件名(不包括子目录下的文件)
showAllFiles(File file)—–显示文件目录下的文件名(包括子目录下的文件)
~~~
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileDemo {
//文件的基本信息
public static void BaseInfo(){
System.out.println("BaseInfo()");
File file = new File("test.txt");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("file.getName(): "+file.getName());
//C:\Documents and Settings\All Users\workspace\IODemo\test.txt
System.out.println("file.getAbsolutePath(): "+file.getAbsolutePath());
System.out.println("file.getParent(): "+file.getParent());
System.out.println("new Date(file.lastModified()): "+ new Date(file.lastModified()));
System.out.println("file.length(): "+ file.length());
System.out.println("file.canRead(): "+ file.canRead());
System.out.println("file.canWrite(): "+ file.canWrite());
System.out.println("file.pathSeparator "+file.pathSeparator);//;
System.out.println("file.separator "+file.separator);//file.separator---路径分割符(\)
File file2 = new File("Demo1");
file2.mkdir();
}
//显示文件目录下的文件名(不包括子目录下的文件)
public static void showFiles(File file){
System.out.println("\nshowFiles: "+file.getName());
String[] strs = file.list();
for (int i = 0; i < strs.length; i++) {
System.out.println("文件"+i+"的名称:"+strs[i]);
}
}
//显示文件目录下的文件名(包括子目录下的文件)
public static void showAllFiles(File file){
System.out.print(file.getName()+"/");
File[] f1 = file.listFiles();
if(f1 != null && f1.length > 0){
for (int i = 0; i < f1.length; i++) {
//System.out.println("文件"+i+"名字: "+f1[i].getName());
if(f1[i] != null){
if(f1[i].isDirectory()){
if(f1[i] != null){
System.out.print("/");
showAllFiles(f1[i]);
}
}else{
if(i == 0){
System.out.println(" ");
}
System.out.println("文件"+i+"名字: "+f1[i].getName());
}
}
}
}
}
}
~~~
调用:
~~~
//1.File的一个基本信息
FileDemo.BaseInfo();
//2.显示文件目录下的文件名(不包括子目录下的文件)
File f1 = new File("C:\\Documents and Settings");
FileDemo.showFiles(f1);
//3.显示文件目录下的文件名(包括子目录下的文件)
FileDemo.showAllFiles(f1);
~~~
输出信息:
~~~
BaseInfo()
file.getName(): test.txt
file.getAbsolutePath(): C:\Documents and Settings\All Users\workspace\IODemo\test.txt
file.getParent(): null
new Date(file.lastModified()): Thu Oct 15 20:05:48 CST 2015
file.length(): 0
file.canRead(): true
file.canWrite(): true
file.pathSeparator ;
file.separator \
showFiles: Documents and Settings
文件0的名称:All Users
文件1的名称:Default User
文件2的名称:LocalService
文件3的名称:NetworkService
文件4的名称:user.com
.................
~~~
参考资料:
1.File api文档
[http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4](http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4)
2.java io视频
[http://edu.csdn.net/course/detail/805/10961?auto_start=1](http://edu.csdn.net/course/detail/805/10961?auto_start=1)