- java.io.File类: 文件和文件目录路径的抽象表示形式, 与平台无关
- File能新建, 删除, 重命名文件和目录, 饭File不能访问文件内容本身. 如果需要访问文件内容本身, 则需要输入流/输出流
- 想要在Java程序中表示一个真实存在的文件或目录, 需要一个File对像, 但是Java程序的一个File对象, 可能没有一个真是存在的文件或目录
- File对象可以作为参数传递给流的构造器
File的三种创建方式
- public File(String pathname)
以pathname为路径创建File对象, 可以是绝对路径或者相对路径, 如果pathname是相对路径, 则默认的当前路径在系统属性user.dir中存储
绝对路径: 是一个固定的路径, 从盘符开始
相对路径: 是相对于某个位置开始
File file1 = new File("hello.txt");//相对路径,相对于当前module
File file2 = new File("F:\\TXT\\hello.txt");//绝对路径
System.out.println(file1);//hello.txt
System.out.println(file2);//F:\TXT\hello.txt
- public File(String parent, String Child)
以parent为父路径, child为子路径创建File对象
File file3 = new File("F:\\TXT","world.txt");
System.out.println(file3);
- public File(File parent, String child)
根据一个父File对象和子文件路径创建File对象
File file4 = new File(file3,"hello.txt");
System.out.println(file4);
路径分隔符
路径中的每级目录之间用一个路径分隔符隔开
路径分隔符和系统有关:
- Windows和DOS系统默认使用**" \ "**来表示
- UNIX和URL使用**" / "**来表示
java程序支持跨平台运行, 因此路径分隔符要慎用
为了解决这个隐患, FIle类提供了一个常量
public static final String separator . 根据操作系统, 动态的提供分隔符
File file = new File("d:"+ File.separator + "atguigu" + File.separator + "info.txt");
File方法
- public String getAbsolutePath() 获取绝对路径
File file1 = new File("hello.txt");
File file2 = new File("F:\\TXT\\hello.txt");//绝对路径
System.out.println(file1.getAbsolutePath());//E:\homework\day08\hello.txt
System.out.println(file2.getAbsolutePath());//F:\TXT\hello.txt
- public String getPath() 获取路径
System.out.println(file1.getPath());//hello.txt
System.out.println(file2.getPath());//F:\TXT\hello.txt
- public String getName() 获取名称
System.out.println(file1.getName());//hello.txt
System.out.println(file2.getName());//hello.txt
- public String getParent() 获取上层文件目录路径, 若无, 返回null
System.out.println(file1.getParent());//null
System.out.println(file2.getParent());//F:\TXT
- public long length() 获取文件长度, 即字节数, 不能获取目录的长度
System.out.println(file1.length());//11
System.out.println(file2.length());//0
- public long lastModifird() 获取最后一次的修改时间, 毫秒数
System.out.println(new Date(file1.lastModified()));//Sat May 15 19:30:04 CST 2021
System.out.println(file2.lastModified());//0
- public String[] list() 获取指定目录下的所有文件或者文件目录名称数组
File file1 = new File("E:\\homework");
String[] list = file1.list();
for (String s : list){
System.out.print(s+" ");//.idea day08 homework.iml jdbc.properties out src
}
- public File[] listFiles() 获取指定目录下的所有文件或者文件目录file数组
File[] files = file1.listFiles();
for (File f : files){
System.out.println(f);
/*
E:\homework\.idea
E:\homework\day08
E:\homework\homework.iml
E:\homework\jdbc.properties
E:\homework\out
E:\homework\src
*/
}
- renameTo
要想保证是成功的
需要file1在硬盘中是存在的, file2不能在硬盘中存在
File file1 = new File("hello.txt");
File file2 = new File("F:\\TXT\\hello.txt");
boolean b = file1.renameTo(file2);
System.out.println(b);//true
- public boolean isDirectory() 判断是否是文件目录
File file1 = new File("hello.txt");
System.out.println(file1.isDirectory());//false
- public boolean isFile() 判断是否是文件
System.out.println(file1.isFile());//true
- public boolean exists() 判断是否存在
System.out.println(file1.exists());//true
- public boolean canRead() 判断是否可读
System.out.println(file1.canRead());//true
- public boolean canWrite() 判断是否可写
System.out.println(file1.canWrite());//true
- public boolean isHidden() 判断是否隐藏
System.out.println(file1.isHidden());//false
File的创建和删除
- public boolean mkdir() 创建文件目录, 如果此文件目录存在, 就不创建了, 如果此文件目录的上层目录不存在, 也不创建
- public boolean mkdirs() 创建文件目录, 如果上层文件目录不存在, 一并创建
File file1 = new File("hi~.txt");
boolean mkdir = file1.mkdir();
if (mkdir){
System.out.println("创建成功");
}
[注意] 如果创建文件或者文件目录没有写盘符路径, 那么默认在项目路径下
- public boolean createNewFile() 创建文件, 若文件存在, 则不创建, 返回false
file1.createNewFile();
- public boolean delete() 删除文件或文件夹
file1.delete();
[注意] Java的删除不走回收站, 要删除一个文件目录, 请注意该文件目录内不能包含文件或者文件目录
File file1 = new File("hi.txt");
if (!file1.exists()){
file1.createNewFile();
System.out.println("创建成功");
}else {
file1.delete();
System.out.println("删除成功");
}