目录
1.什么是File对象
File 类 就是当前系统中 文件或者文件夹的抽象表示
通俗的讲 就是 使用File对象 来操作我们电脑系统中的文件或者文件夹学习File类 其实就是学习 如果通过file对象 对系统中的文件/文件夹进行增删改查
2.创建File对象
! 可在自己磁盘内先准备一个目录,以后对文件的操作可以都放在该目录下。
//创建file对象
public class Test3 {
public static void main(String[] args) {
//方法一:Windows兼容转义符/、\(\\目录层级)
File file1 = new File("D\\AAA\\b.txt");
File file2 = new File("D/AAA/c.txt");
//方法二:获取当前代码所在可识别的系统的转义符(File.separator)
System.out.println(File.separator);
File file3 = new File("D:"+File.separator+"AAA"+File.separator+"c.txt");
}
}
2.1 增加操作
class Test4{
public static void main(String[] args) throws IOException {
File file1 = new File("D:/AAA/bbb.txt");
//根据具体使用方法的创建不同的类型,创建文件类型不受命名影响
//创建相应的文件
file1.createNewFile();
//创建相应的目录(单层目录)
File file2 = new File("D:/AAA/BBB");
file2.mkdir();
//创建多级目录
File file3 = new File("D:/AAA/CCC/ddd");
file3.mkdirs();
}
}
2.2 删除操作
//删除文件
class Tset5{
public static void main(String[] args) throws InterruptedException {
//删除文件
File file1 = new File("D:/AAA/b.txt");
file1.delete();
//当程序退出后删除
File file2 = new File("D:/AAA/c.txt");
file2.deleteOnExit();
//休眠10秒
//Thread.sleep(5000);
//删除空目录
File file3 = new File("D:/AAA/BBB");
file3.delete();
}
}
2.3 修改操作
//修改文件
class Test6{
public static void main(String[] args) throws IOException {
File file1 = new File("D:/AAA/bb.txt");
//添加一个文件
file1.createNewFile();
//设置文件的权限为不能读(windows系统下会设置失败)
file1.setReadable(false);
//设置文件不能写
file1.setWritable(false);
//设置文件只读权限
file1.setReadOnly();
//检查文件是否能读
boolean a=file1.canRead();
System.out.println(a);
//重命名(若修改后的文件名在不同盘,则不创建新的文件)
file1.renameTo(new File("D:/AAA/ab.txt"));
}
}
2.4 查询操作
//查询文件
class Test7{
public static void main(String[] args) throws IOException {
File file1 = new File("D:/AAA/BBB/c.txt");
//创建一个文件file1.createNewFile();
//得到一个文件的名称
String a=file1.getName();
System.out.println(a);
//得到一个父级路径名称
String b=file1.getParent();
System.out.println(b);
//判断一个该文件对象是否为文件类型
boolean c=file1.isFile();
System.out.println(c);
//判断该文件是否为目录类型
boolean d=file1.isDirectory();
System.out.println(d);
File file2 = new File("D:/AAA");
//列出AAA目录下所有的子文件名称
String[] name=file2.list();
System.out.println(Arrays.toString(name));
//for each循环列出所有AAA目录下的文件对象
File[] files=file2.listFiles();
for (File f:files){
System.out.println(f.toString());
}
}
}
经典题目: 使用方法的递归调用
//显示指定目录下的所有文件。D:/AAA下所有的文件.
class Test8{
public static void main(String[] args) {
showAllFiles("D:/AAA");
}
//使用传入的路径构建文件对象
public static void showAllFiles(String path){
File file1 = new File(path);
//判断文件是否存在 或者是否存在目录
if ((!file1.exists())||(!file1.isDirectory())){
return;
}
//列出该目录下的所有文件对象
File[] files=file1.listFiles();
//遍历数组
for (File f:files){
if (f.isDirectory()){
System.out.println(f.getPath()+"目录");
//继续调用show方法
showAllFiles(f.getPath());
}else {
System.out.println(f.getPath()+"");
}
}
}
}