File类:
File类是java.io包下代表与平台无关的文件和目录。File可以新建、删除、重命名文件和目录,但是不能访问文件内容本身,如果需要访问内容的话,需要通过输入/输出流进行访问。
File类的构造方法:
常用第一种比较简单在这里注意Java中/要写成//或\才可识别
比如:File cc=new File("c://ccc.txt");
File中一些常用功能:****
createNewFile(); 创建一个新的空文件
mkdir(); 创建一个目录
mkdies(); 创建一个多目录文件
delete(); 删除此文件或目录(当删除多级目录时需要使用递归删除)
isDirectory(); 判断是否为目录 结果为布尔型
isFile(); 判断是否为文件 结果为布尔型
exists(); 判断是否存在
getPath(); 返回路径名字符串
getAbsolutePath(); 返回绝对路径名字符串
getName();返回文件或目录的名称
listFiles():返回一个File对象数组
length();返回文件长度(大小)
例子:
File hh=new File("c://aaa//bbb//ccc.txt");
System.out.println("文件名:"+hh.getName());
System.out.println("文件长度:"+hh.length());
System.out.println("文件路径:"+hh.getPath());
System.out.println("文件绝对路径:"+hh.getAbsolutePath());
File ll=new File("C:\\aaa\\bbb");
String[] names= ll.list();
System.out.println(Arrays.toString(names));
File[] fs= ll.listFiles();
for (File file : fs) {
System.out.println(file.getName());
}
结果:
递归删除:
Delete解决不了多目录删除问题且只能删除空目录,删除多级目录需要使用递归删除,一层层查找,发现是文件就删除,发现是目录(文件夹)就打开找文件删除,一直循环执行
public class Io3 {
public static void main(String[] args) {
File aa=new File("C:\\.metadata");
Io3.de(aa);
}
public static void de(File aa) {
File[] files=aa.listFiles();
for(int i=0;i<files.length;i++) {
File file=files[i];
if(file.isFile()) {
System.out.println("删除文件:"+file.getName());
file.delete();
}else {
de(file);
}
}
System.out.println("删除文件夹:"+aa.getName());
aa.delete();
}
}
在de方法中挨个查文件夹和文件,如果是文件的话直接删除,如果是文件夹的话就再次遍历该文件夹,重复这一过程知道只剩根文件夹,再删除根文件夹
\