1.概述
(1). File类及相关的各种流,都定义在java.io包下.
(2). 一个File对象代表硬盘或网络中的一个文件或文件目录.与平台无关.
(3). File能新建,删除,重命名文件或目录.但不能访问文件本身.如果需要访问文件内容本身,需要使用输入输出流.
(4). 想要在java程序中表示一个真实存在的文件或目录,那么必须要有一个文件对象.但java中的一个文件对象,可能没有一个真实存在的文件或文件目录.
2.构造器
public File(String pathname) : 以pathname为路径创建File对象,可以是相对路径也可以是绝对路径 如果是相对路径,则默认的当前路径在系统属性user.dir中存储 public File(String parent, String child) : 以parent为父路径,child为子路径创建File对象 public File(File parent, String child) : 根据一个File对象和子文件路径创建File对象
关于路径 :
- 绝对路径 : 从盘符开始的路径,是一条完整的路径.
- 相对于项目目录的路径.这是一条便捷的路径.在IDEA中,main方法中文件的相对路径是相对于"当前工程Progect".而在单元测试中,其中文件的相对路径是相对于"当前模块Module".
2.常见方法
(1). 获取文件和目录的基本信息
例 :
@Test public void Test1() { File file = new File("C:\\Users\\hexua\\.vscode\\cli");//双斜杆避免转义 //public String getName() : 获取名称 System.out.println(file.getName()); //public String getPath() : 获取路径 System.out.println(file.getPath()); //public String getAbsolutePath() : 获取绝对路径 System.out.println(file.getAbsolutePath()); //public String getAbsoluteFile() : 获取绝对路径表示的文件 System.out.println(file.getAbsoluteFile()); //public String getParent : 获取上层文件目录的路径,若无,则返回null System.out.println(file.getParent()); //public long length() : 获取文件长度,如果是目录,则获取目录下的所有文件的长度 System.out.println(file.length()); //public long lastModified() : 获取最后一次的修改时间的时间戳,单位应该是ms System.out.println(file.lastModified()); } 控制台 cli C:\Users\hexua\.vscode\cli C:\Users\hexua\.vscode\cli C:\Users\hexua\.vscode\cli C:\Users\hexua\.vscode 8192 1702823509151
如果File对象代表的文件或目录存在,则File对象实例初始化时,就会用硬盘中对应的文件或文件目录的信息为File对象赋值.否则除了路径和名称外,其他属性都是默认值.
(2). File类的重命名功能
@Test public void test8() { //public boolean ranameTo() : 把文件重命名为指定的文件路径 //file1.renameTo(file2) ---> 要想返回true,file1必须存在,file2必须不存在,但file2所在的文件目录必须存在 }
(3). 判断功能的方法
例 :
@Test public void Test2() { File file = new File("C:\\Users\\hexua\\Cloud");//双斜杆避免转义 //public boolean exits() : 此File表示的文件或目录是否实际存在 System.out.println(file.exists()); //public boolean isDirectory() : 此File表示的是否是目录 System.out.println(file.isDirectory()); //public boolean isFile() : 此File表示的是否是文件 System.out.println(file.isFile()); //public boolean canRead() : 判断是否可读 System.out.println(file.canRead()); //public boolean canWrite() : 判断是否可写 System.out.println(file.canWrite()); //public boolean isHidden() : 判断是否隐藏 System.out.println(file.isHidden()); } 控制台 true true false true true false
(4). 创建,删除功能.
@Test public void test7() { File file = new File("src/xixihaha.txt"); try { //public boolean createNewFile() : 创建文件。若文件存在,返回false System.out.println(file.createNewFile()); } catch (IOException e) { throw new RuntimeException(e); } //public boolean mkdir : 创建文件目录。如果此文件目录存在,就不创建了.如果此文件目录的上层 //目录也不存在,那么也不创建 //public boolean mkdirs : 创建文件目录。如果此文件目录的上层不村子,也创建 //假设codes与ideas都不存在,mkdirs方法可以创建,mkdir则不可以 File file1 = new File("D:\\codes\\.ideas"); //public boolean delect() : 删除文件或文件夹 file.delete(); }
至于怎么区分文件与文件夹.很简单.文件一般带后缀,如".java", ".cpp", ".jpg",而文件夹不带.