File类
java.io.File类是文件和目录路径名的抽象表示,它代表了磁盘上的一个目录或者文件。
-
主要用于文件和目录的创建、查找、删除等操作
-
构造方法:
- public File(String pathname):根据指定字符串路径创建一个File对象
- public File(String parent,String child):根据父路径和子路径字符串创建一个File对象
- public File(File parent,String child):根据parent目录对象和子路径字符串创建一个File对象
File file1 = new File("F:\\FileTest\\a.txt");
File file2 = new File("F:\\FileTest","a.txt");
File file3 = new File(file2,"\\t1\\b.txt");
- 常用方法:
获取
返回值 | 方法名 | 说明 |
---|---|---|
String | getAbsolutePath() | 返回此File的绝对路径名的字符串 |
String | getPath() | 返回此File文件路径的字符串 |
String | getName() | 放回此File的文件名或者目录名 |
long | length() | 返回此File表示的文件长度 |
String | getParent() | 返回此File的父目录 |
判断
返回值 | 方法名 | 说明 |
---|---|---|
boolean | exists() | 判断该File文件或目录是否真的存在 |
boolean | isDirectory() | 判断该File是否为一个目录 |
boolean | isFile() | 判断该File是否为一个文件 |
boolean | isHidden() | 判断该File是否为隐藏文件 |
boolean | canRead() | 判断该File是否可以读取 |
boolean | canWrite() | 判断该File是否可以写入 |
创建和删除
返回值 | 方法名 | 说明 |
---|---|---|
boolean | createNewFile() | 当该File对象存在时返回true,不存在时,创建一个该对象并返回false |
boolean | delete() | 删除该File对象对应的文件或者目录 |
boolean | mkdir() | 创建一个目录 |
boolean | mkdirs() | 可以创建一个多级目录 |
boolean | renameTO(File dest) | 重名名File为指定的dest对象 |
目录的遍历
返回值 | 方法名 | 说明 |
---|---|---|
String[] | list() | 返回FIle目录中所有的文件名或者目录名的字符串数组 |
File[] | listFiles() | 返回FIle目录中所有的文件或者目录的File对象数组 |
-
listFIles(FilenameFilter filter)可以传入一个过滤器对象,将获取的所有目录或文件进行筛选后返回
public class Test1{ public static void main(String[]args){ File file = new File("F:\\FileTest"); //返回这个目录下的所有文件和目录名的数组 String[] str = file.list(); for (String s:str){ System.out.println(s); } //使用过滤器留下符合要求的文件返回文件对象的数组(使用匿名内部类实现接口,方便) File[] files2 = file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { if (name.endsWith(".txt")){ return true; }else { return false; } } }); for (File f:files2){ System.out.println("txt文件有:"+f.getName()); } } }
练习:
搜索一个目录中所有的.Java文件
public class Exercise1 {
public static void main(String[] args) {
File file = new File("F:\\IdeaProject");
souSuo(file);
}
public static void souSuo(File file){
File[] files = file.listFiles();
for (File f: files){
//如果是目录地递归调用该方法
if (f.isDirectory()){
souSuo(f.getAbsoluteFile());
}else {
if (f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}
}
}
}