File类

来源:互联网 发布:seven eleven 网络语 编辑:程序博客网 时间:2024/06/02 04:06

File类

File类的作用是操作文件和目录,但却不能访问文件。

  • File类
    • 访问文件和目录
      • 访问与文件名相关的方法
      • 文件检测相关的一些方法
      • 获取文件信息
      • 文件操作的一些方法
      • 目录相关的操作
      • 测试
    • 文件过滤

1. 访问文件和目录

1. 访问与文件名相关的方法

String getName() 此方法返回File对象所表示的文件名或路径名,如果是路径则返回路径的最后一级子路径名。
String getPath() 返回此File对应的路径名。
File getAbsoluteFile() 返回此File对象的所对应的绝对路径。
String getAbsolutePath() 返回此File对象所对应的绝对路径名。
String getParent() : 返回此File对象所对应目录(最后已经子目录)的父目录名。
boolean renameTo(File newName) : 重命名此File对象所对应的文件或目录,如果重命名成功则返回true;否则返回false。

关于相对路径与绝对路径。
1. 绝对路径:绝对路径是一定能访问到的。在windows系统上,如果一个路径是以盘符开头则说明是一个绝对路径。
2. 相对路径:相对于某一文件的路径。

创建一个File类:
1. FIle (String pathname)
File file1 = new File("E:\\java");
2. File (File Parent, String child)
File file2 = new File(file1, "a.txt");
3. File (String parent, String child)
File file3 = new File("E:\\java", "a.txt")

2. 文件检测相关的一些方法

boolean exisit() 判断File文件是否存在
boolean canWrite(): 判断File对象所对应的目录是否可写。
boolean canRead(): 判断File对象所对应的目录是否可读。
boolean isFile() :判断File对象所对应的是否文件。
boolean isDirectory(): 判断File对象所对应的是否目录。
boolean isAbsolute():判断File对象所对应的文件或目录是否是绝对路径。

3. 获取文件信息

long lastModified() : 返回文件最后修改时间。
long length() : 获取文件长度。

4. 文件操作的一些方法

boolean createNewFile() : 当File对象所对应的文件不存在时,该方法将创建一个新的文件,如果创建成功则将返回true,否则将返回false。(有可能File对应的不是文件)
boolean delete() : 删除File所对应的文件。
static File createTempFile(String prefix, String suffix) : 在默认临时文件目录中创建一个空文件,使用给定的前缀、系统生成的随机数和后缀作文文件名。prefix - 用于生成文件名的前缀字符串;必须至少是三字符长,suffix - 用于生成文件名的后缀字符串;可以为 null,在这种情况下,将使用后缀 “.tmp”。
static File createTempFile(String prefix, String suffix, File directory):在给定的目录下生成一个文件,文件名前一个方法相同。如果使用默认的目录,第三个参数为null。
void deleteOnExit() : 指定当Java虚拟机退出时,删除File所对应的文件和目录。

5. 目录相关的操作

boolean mkdir() : 试图创建一个File对象所对应的目录,如果创建成功,则返回true,否则返回false。该方法要求File所对应的是一个路径,而不是文件。
String[] list() : 列出File对象的所有子文件名和路径名。
File listFiles[] : 列出File所对应的子文件和子路径。
static File[] listRoot() : 列出系统的所有根路径。

6. 测试

import java.io.File;import java.io.IOException;public class TestDemo {    public static void main(String[] args) throws IOException {        // 创建File对象        File file1 = new File("E:\\java\\a");        File file2 = new File("b.txt");        File file3 = new File(file1, "c.txt");        // 访问文件名的相关方法        System.out.println(file1.getName());        System.out.println(file3.getParent());        System.out.println(file1.getAbsoluteFile());        System.out.println(file1.getAbsolutePath());        System.out.println(file2.getPath());        // 文件检测的相关方法        System.out.println(file2.exists());        System.out.println(file2.canRead());        System.out.println(file2.canWrite());        System.out.println(file1.isDirectory());        System.out.println(file1.isAbsolute());        System.out.println(file2.isFile());        // 文件与目录的相关操作        file2.createNewFile();        File file4 = File.createTempFile("aaa", ".txt");        file1.mkdir();        File file5 = File.createTempFile("aaa", ".txt", file1);        file5.renameTo(file3);        String[] list = file1.list();        for (String str : list) {            System.out.println(str);        }        File[] listFile = file1.listFiles();        for (File file:listFile) {            System.out.println(file);        }        File[] roots = File.listRoots();        for (File root : roots) {            System.out.println(root);        }    }}

2. 文件过滤

File类中的list()方法可以接受一个FilenameFilter参数,通过该参数的可以只列出符合条件的文件。
FilenameFilter接口中包含了一个accept(File dir, String name)的方法,该方法将依次对File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或者文件。

public class FilenameFilterDemo {    public static void main(String[] args) {        File file = new File("E:\\Java\\src\\InputandOutput");        // 使用Lambda表达式(目标类型为FilenameFilter)实现文件过滤        String[] namelist = file.list((dir, name) -> name.endsWith(".java")            || new File(name).isDirectory());        for (String name : namelist) {            System.out.println(name);        }    }}