学习笔记:File类
File类是java.io包下代表与平台无关的文件和目录(是文件和文件目录路径的抽象表示),也就是说,在程序中操作文件和目录,都可以通过File类完成,主要用于文件和目录的创建、查找和删除等。需要注意的是,File不能访问文件内容本身,如果需要访问文件内容本身,则需要使用 输入/输出流(IO流)。
正式介绍File类之前,有关文件路径中的"/"做一个说明:在java中路径一般用"/";在windows中的路径一般用“\”;所以在java中写windows路径一般用“/”,或将“\”转义,变产“\”(IntelliJ IEDA工具中会自动转义)。
1. File类的常用构造方法
File类可以使用文件路径字符串来创建File实例
路径的说明: 绝对路径:从盘符开始的路径,这是一个完整的路径; 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用
File file2 = new File("f:\\test");
System.out.println(file2);
File file3 = new File("f:/test");
System.out.println(file3);
//2. File(String parent,String child) parent + child
File file4 = new File("f:/test", "a.txt");
System.out.println(file4);
//File(File parent,String child) parent + child
File file5 = new File(file2, "a.txt");
System.out.println(file5);
2. 访问文件名相关的方法
String getName(): 返回此File对象所表示的文件名或路径名(如果是路径,则返回最后一级子路径名)
String getPath(): 返回次File对象所对应的路径名。
String getAbsoluteFile(): 返回此File对象对应的绝对路径名。
File file = new File("a.txt");
File file1 = new File("f:\\test");
//String getName():
System.out.println(file.getName());
System.out.println(file1.getName());
//String getPath():
System.out.println(file.getPath());
System.out.println(file1.getPath());
//String getAbsoluteFile():
System.out.println(file.getAbsolutePath());
System.out.println(file1.getAbsolutePath());
3. 文件检测相关的方法
boolean exists(): 判断File对象所对应的文件或目录是否存在。
boolean isFile(): 判断File对象所对应的是否是文件,而不是目录。
boolean isDirectory(): 判断File对象所对应的的是否是目录,而不是文件。
File file = new File("f:/test");
File file1 = new File("a.txt"); //项目根目录存在
//boolean exists():
System.out.println(file.exists());
System.out.println(file1.exists());
// boolean isFile():
System.out.println(file.isFile());
System.out.println(file1.isFile());
// boolean isDirectory():
System.out.println(file.isDirectory());
System.out.println(file1.isDirectory());
4. 获取常规文件信息
long length(): 返回文件内容的长度
5. 文件操作相关的方法
boolean createNewFile(): 当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回true,否则返回false。
File file = new File("f:/test/a/a.txt");
//如果父路径不存在则会抛出异常
//boolean result = file.createNewFile();
//System.out.println(result);
//父路径是否存在
File parentFile = file.getParentFile();
if (parentFile.exists()) {
boolean result = file.createNewFile();
System.out.println(result);
}
File file2 = new File("f:/test/c/a");
//boolean result2 = file2.mkdir();
boolean result2 = file2.mkdirs();
System.out.println(result2);
boolean delete(): 删除File对象所对应的文件或路径。
File file = new File("f:/test/a");
boolean delete = file.delete();
System.out.println(delete);
6. 目录操作相关的方法
boolean mkdir(): 试图创建一个File对象所对应的目录,如果创建成功,则返回true;否则返回false。调用该方法时File对象必须对应一个路径,而不是一个文件,并且,其父目录也是必须存在的;
boolean mkdirs(): 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
String[] list(): 列出File对象的所有子文件名和路径名,返回String数组。
File[] listFiles(): 列出File对象的所有子文件和路径,返回File数组。
文件过滤器
在File类的list() 方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。
//创建一个File实例
File file = new File("C:\\Users\\LiuJinmai\\Desktop\\aa");
//使用匿名内部类,重写过滤器方法
File[] list = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//获取文件名,过滤后缀名为.png的文件
if (pathname.getName().endsWith(".png")){
return true;
}
return false;
}
});
//打印过滤后的list
for (File f : list) {
System.out.println(f);
}