1 构造方法
-
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 -
public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File实例。 -
public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File实例。
举个例子
File file1 = new File("D:\\a.txt"); //这是windows文件写法在字符串中需要转义所以有两个反斜杠,linux 一个斜杠即可
File file2 = new File("D:\\", "a.txt);
小贴士:
- 一个File对象代表硬盘中实际存在的一个文件或者目录。
- 无论该路径下是否存在文件或者目录,都不影响File对象的创建。
2 常用方法
获取功能的方法
-
public String getAbsolutePath()
:返回此File的绝对路径名字符串。 -
public String getPath()
:将此File转换为路径名字符串。 -
public String getName()
:返回由此File表示的文件或目录的名称。 -
public long length()
:返回由此File表示的文件的长度。如果是文件夹或者没有该文件则输出0
判断功能的方法
-
public boolean exists()
:此File表示的文件或目录是否实际存在。 -
public boolean isDirectory()
:此File表示的是否为目录。 -
public boolean isFile()
:此File表示的是否为文件。
如果文件不存在则
isDirectory()
isFile()
都返回false
创建删除功能的方法
-
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 -
public boolean delete()
:删除由此File表示的文件或目录。直接删除硬盘文件,不记录到回收站中。如果目录不为空,不会删除。 -
public boolean mkdir()
:创建由此File表示的目录。 -
public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
目录的遍历
-
public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。 -
public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录
两种返回类型不同而已
3 文件搜索
题目:子一个文件夹中搜索所有的.java文件,然后打印出来
1 学会递归遍历文件夹。
public class RecursionDemo {
public static void main(String[] args) {
File file = new File("D:\\java");
printDir(file);
}
public static void printDir(File file){
File[] files = file.listFiles();
for (File file1 : files){
System.out.println(file1.getAbsolutePath());
if (file1.isDirectory()){
printDir(file1);
}
}
}
}
2 获取文件名,用到了lambda表达式和listFiles
-
java.io.FileFilter
是一个接口,是File的过滤器。 该接口的对象可以传递给File类的listFiles(FileFilter)
list(FileFilter)
作为参数, 接口中只有一个方法。
boolean accept(File pathname)
:测试pathname是否应该包含在当前File目中,符合则返回true。 -
FilenameFilter
也是过滤器接口,包含一个accept方法
boolean accept(File dir, String name)
:一个是目录File类,后面的是文件名。是否应该包含在当前File目中,符合则返回true
如果匿名内部类只有一个抽象类,可以使用lambda。
public class RecursionDemo2 {
public static void main(String[] args) {
File file = new File("D:\\java");
printDir(file);
}
public static void printDir(File dir){
File[] files = dir.listFiles(f ->{
return f.getName().endsWith(".java") || f.isDirectory();
});
for (File file : files){
if (file.isFile()){
System.out.println(file.getAbsolutePath());
}else {
printDir(file);
}
}
}
}
网友评论