File [属于io包下面的但是不是流.]
File 可以操作磁盘上的目录和文件
1) 可以删除和创建文件.
2) 可以获取文件的一些属性.
3) File不能对文件内容进行修改.
File 的构造方法
File(String pathname); 通过名称来指定路径.
File file1 = new File(“d:\a.txt”);
File(String parent , String child); 从父路径名称 和子路径名称中创建实例.
File file2 = new File(“d:\”,”a.txt”); 【效果和file1一样】.
File(File parent , String child) ;
File file4 = new File(“d:\”);
File file3 = new File(file4,”b.txt”); 【相当于file1 , file2】
常用方法:
获取
getAbsolutePath(); 获取文件的绝对路径.
getPath(); 获取文件的相对路径.
getName(); 获取文件的名称.
length(); 获取文件的长度.【只能操作文件,目录不可以.】
判断
exists(); 判断此File是否存在.
isDirectory(); 判断File是否是目录.
isFile(); 判断File是否是文件.
创建和删除
createNewFile(); 创建一个文件.
mkdir(); 创建一个目录.
mkdirs(); 创建多级目录.
delete(); 删除一个文件或者目录. 【删除目录的前提就是目录必须为空.】
遍历
String[] list(); 返回一个字符串数组.
File[] listFiles(); 返回一个File数组.
**注意事项:
list遍历的File对象不是一个目录,会报null异常.
list遍历的目录不存在,会报异常.
list遍历的目录是一个系统文件.权限不够,也会报null异常.
案例:
File file = new File(“f:\ss”);
File[] fileArray = file.listFiles();
for (File f : fileArray) {
if(f.getName().endsWith(“.java”)){
System.out.println(f);
}
}
}
递归
1):指方法自己调用自己,自己调用自己.
2):递归的层次不能太深,否则栈溢出.
3):递归必须要有一个出口.
缺点:
递归调用时不能太多次,否则会栈溢出.
递归态消耗栈内存.
递归文件删除案例
public static void main(String[] args) {
File file = new File(“f:\ss”);
getFile(file);
}
private static void getFile(File file) {
File[] fileArray = file.listFiles();
for (File f : fileArray) {
if(!f.isFile()){
getFile(f);
f.delete();
}else{
f.delete(); //文件删除完以后
}
}
}