介绍
不管是什么编程语言,对文件操作的需求都是必须的,在Java中,提供了一个专门操作文件的类File类。这个类可以实现很多对文件的操作,比如创建一个文件,删除或者重命名某个文件,判断硬盘上某个文件是否存在,查询文件最后修改时间等。
File类
File类封装一个路径,这个路径可以是从系统盘开始的绝对路径(如:D:\file\a.txt),也可以是相对于当前目录而言的相对路径(如:src\a.txt)。File类内部封装的路径可以指向一个文件,也可以指向一个目录。
File类的构造方法:
Flie类的常用方法:
Demo
下面是几个File类的基本操作实现:
1.遍历目录下的所有文件,分为二种情况,这个目录下不包括子目录,则直接遍历:
public static void TraverseFile(){
File file = new File("src\\Zhuanti");
if(file.isDirectory()){
String[] names = file.list();
for (String name: names)
System.out.println(name);
}
}
若只遍历以.java结尾的文件:
public static void TraverseFiterFile(){
File file = new File("src\\Zhuanti");
FilenameFilter filenameFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File currFile = new File(dir,name);
if (currFile.isFile() && name.endsWith(".java"))
return true;
else
return false;
}
};
if(file.exists())
{
String[] lists = file.list(filenameFilter);
for (String name: lists)
System.out.println(name);
}
}
若目录下还有子目录,则要使用递归的思想来遍历:
File file = new File("src");
FileOperation.TraverseDir(file);
public static void TraverseDir(File dir){
File[] files = dir.listFiles();
for (File file : files)
{
if (file.isDirectory())
TraverseDir(file);
System.out.println(file.getPath());
}
}
2.删除文件以及目录:若要删除的目录下包含子目录或者文件,File类的delete()方法是不允许直接删除的,这个时候可以使用下面方法递归删除。
File file = new File("src");
FileOperation.TraverseDir(file);
public static void deleteDir(File dir){
if (dir.exists())
{
File[] files = dir.listFiles();
for (File file: files)//遍历所有子目录和文件
{
if (file.isDirectory())
deleteDir(file); //如果是目录。递归调用
else
file.delete(); //如果是文件,直接删除
}
//删除完一个目录里所有文件后,就删除这个目录
dir.delete();
}
}