跳转至

文件操作

1. File 类

Java 中 File 隶属于 java.ioJava 流、文件和IO;Java 文件类以抽象的方式代表文件名和目录名,该类主要用于文件和 目录的创建、文件的查找和删除等。

实例化一个 file 对象用于处理文件

String dirName = "/test.txt";
File file  = new File(dirName);

1.1 创建 File 示例

  • 通过给定的父抽象路径名和子路径名字符串创建一个新的 File 实例。
File (File parent, String child);
  • 通过给定的路径名字符串来创建一个新的 File 实例。
File (String pathName);
  • 根据 parent 路径名字符串和 child 路径名字符串创建一个新的 File 实例。
File (String parent, String child);
  • 通过将给定的 file:URL 转换成一个抽象路径名来创建一个新的 File 实例。
File (URL url);

1.2 File 方法

方法 功能描述
public String getName() 返回此抽象目录表示的文件目录或名称
public String getParent() 返回此抽象路径名的父路径名和路径名字符串, 若未指定父目录则返回 null
public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名, 若未指定父目录则返回 null
public String getPath() 将此抽象路径名转换为一个路径名字符串
public boolean isAbsolute() 测试此抽象路径是否为绝对路径名
public String getAbsolute() 返回此抽象路径名的绝对路径字符串
public boolean canRead() 测试应用程序是否可以读取到此抽象路径名表示的文件
public boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件
public boolean exists() 测试此抽象路径名表示的文件或目录是否存在
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
public long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间
public long length() 返回由此抽象路径名表示的文件的长度
public boolean createNewFile() throws IOException 当且仅当不存在具有此抽象目录指定的文件或目录时,由此创建一个新的空文件
public boolean delete() 删除此抽象路径名表示的文件或目录
public void deleteOnExit() 在虚拟机终止时请求删除此抽象路径名表示的文件或目录
public String[] list() 返回由此抽象路径名所表示的目录中文件和目录名称所组成的字符串数组
public String[] list(FilenameFilter filter) 功能与上一条相同,通过满足指定过滤器的抽象路径名来表示的
public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件
public boolean mkdir() 创建此抽象路径名指定的目录
public boolean mkdirs() 创建此抽象路径名所指定的目录,包括创建必须但不存在的父目录
public boolean renameTo(File dest) 重新命名由此抽象路径名表示的文件
public boolean setLastModified(long time) 设置由此抽象路径名所指定的文件或目录的最后一次修改时间
public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定的目录中创建一个新的空文件,用指定的前缀和后缀生成其名称
public int compareTo(File pathname) 按字母顺序比较两个抽象路径名
public int compareTo(Object o) 按字母顺序比较抽象路径名与给定对象
public boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等
public String toString() 返回此抽象路径名的路径名字符串

1.3 使用示例

public boolean createFile(String pathName){
    try {
        // 实例化 file 对象
        File file = new File (pathName);
        // 判断文件是否创建成功
        if (file.createNewFile()){
            System.out.println("File: " + pathName + " Create Done!");
            return true;
        } else {
            System.out.println("The file already exists!");
        }
    } catch (IOException ioe) {
        // 创建错误输出提示
        System.out.println("Create File Error!);
        ioe.printStackTrace();
        return false;
    }
}

2. BufferedWriter 类

2.1 BufferedWriter 简述

BufferedWriter(Java 缓冲流)是 Writer 的子类,它为了提高效率,加入了缓冲技术,将字符读取对象作为参数,在写操作期间,字符将写入内部缓冲区而不是磁盘,一旦缓冲区被填充或者关闭写入器,缓冲区中的所有字符将被写入磁盘。

BufferedWriter 类将一个常量的值作为默认缓冲区的大小,同时也可以通过构造函数指定大小。

BufferedWriter 类中的方法均返回 void

2.2 创建一个 BufferedWriter

创建 BufferedWriter 之前,首先需要导入 java 包: java.io.BufferedWriter

首先实例化 FileWriterBufferedWriter

FileWriter file = new FileWriter(String fileName);
BufferedWriter writer = new BufferedWriter(file);

此外,在创建 BufferedWriter 类的过程中也可以同时指定缓冲区的大小。

BufferedWriter writer = new BufferedWriter(file, int size);

2.3 write() 方法

该方法用于将数据写入缓冲区。

  • .write() —— 将单个数值写入缓冲区
  • .write(char[] array) —— 将指定数组中的字符写写入入缓冲器
  • .write(String data) —— 将指定的字符串写入写入缓冲器

2.4 flush() 方法

如果需要清除内部缓冲区,可以使用 flush() 方法。此方法强制编写器将缓冲区中所存的数据写入目标文件。

2.4 close() 方法

如果需要关闭缓冲区的 writer() 则可以调用该方法。一旦调用了该方法就不能再使用 writer() 写入文件。