File类
概述
- File类的一个对象,代表一个文件或者一个文件目录(文件夹)
- File类声明在java.io包下
File类的实例
三个构造器(此时只是内存层面的一个对象)
-
public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或相对路径
- 绝对路径:是一个固定的路径,从盘符开始
- 相对路径:是相较于某个路径下指明的路径(可以用常量File.separator来表示分隔符,因为每个系统的分隔符不相同)
-
public File(String parent, String child)
- parent:上一层目录
- child:在parent目录下指定的目录
-
public File(File parent, String child)
此时调用toString()方法时,只是把文件的路径做一个输出
File类常用方法
此时的方法调用还是内存层面的方法调用
File类的获取功能
-
getAbsolutePath()
获取绝对路径
-
getPath()
获取路径
-
getName()
获取名称
-
getParent()
获取上层文件目录路径,若无,返回null
-
length()
获取文件长度
-
lastModified()
获取最后一次的修改时间,毫秒值
7和8两个方法适用于文件目录
-
list()(返回值String[])
获取指定目录下的所有文件或者文件目录的名称数组
-
listFiles()(返回值File[])
获取指定目录下所有文件或者文件目录的File数组
代码实现
1-6方法
File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");
System.out.println(file1.getAbsolutePath());//E:\workspace_idea\JavaAdvanced\IO\hello.txt
System.out.println(file2.getAbsolutePath());//E:\workspace_idea\JavaAdvanced\IO\hi.txt
System.out.println(file1.getPath());//hello.txt
System.out.println(file2.getPath());//E:\workspace_idea\JavaAdvanced\IO\hi.txt
System.out.println(file1.getName());//hello.txt
System.out.println(file2.getName());//hi.txt
System.out.println(file1.getParent());//null
System.out.println(file2.getParent());//E:\workspace_idea\JavaAdvanced\IO
System.out.println(file1.length());//0
System.out.println(file2.length());//0
System.out.println(file1.lastModified());//0
System.out.println(file2.lastModified());//0
此时两个文件都不存在的运行结果
此时创建了这两个文件,文件里面的内容和其文件名相同
7-8方法
File file3 = new File("E:\\workspace_idea\\JavaAdvanced\\IO");
String[] list = file3.list();
for (String i : list) {
System.out.println(i);
}
File[] files = file3.listFiles();
for (File f : files){
System.out.println(f);
}
File类的重命名
renameTo(File dest)
把文件重命名为指定的文件路径
若是想要返回为true,必须保证file1在硬盘中是存在的,且file2不可以存在
两者都存在,返回false
//此时file1存在,file2不存在
File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");
boolean renameTo = file1.renameTo(file2);
System.out.println(renameTo);//true
File类的判断功能
-
isDirectory()
判断是否是文件目录
-
isFile()
判断是否是文件
-
exists()
判断是否存在
-
canRead()
判断是否可读
-
canWrite()
判断是否可写
-
isHidden()
判断是否隐藏
代码实现
//此时file1不存在,file2存在
File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");
System.out.println("file1:");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
System.out.println("file2:");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());
File类的创建功能
-
createNewFile()
创建文件,若文件存在,则不创建,返回false
File file = new File("hello.txt"); if(!file.exists()){ file.createNewFile(); System.out.println("创建成功"); }else{ System.out.println("该文件存在"); file.delete(); System.out.println("删除成功"); } //创建成功
-
mkdir()
创建文件目录,如果此文件目录存在,就不创建;如果此文件目录的上层目录不存在,也不创建
//此时该目录不存在,上层目录存在 File file1 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\Java1"); boolean mkdir1 = file1.mkdir(); if(mkdir1){ System.out.println("创建成功"); }else{ System.out.println("创建失败"); } //此时该目录不存在,上层目录也不存在 File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO1\\Java2"); boolean mkdir2 = file2.mkdir(); if(mkdir2){ System.out.println("创建成功"); }else{ System.out.println("创建失败"); }
-
mkdirs()
创建文件目录,如果上层目录不存在,一并创建
注:如果创建文件或文件目录没有写盘符路径,那么默认在项目路径下
File类的删除功能
delete()
删除文件或者文件夹(Java删除不走回收站)
//此时该文件存在
File file = new File("hello.txt");
if(!file.exists()){
file.createNewFile();
System.out.println("创建成功");
}else{
System.out.println("该文件存在");
file.delete();
System.out.println("删除成功");
}
总结
- File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
- File类的对象常会作为参数传递到流的构造器中,指明读取或写入的节点