欢迎访问宙启技术站
智能推送

Java文件IO操作函数大全

发布时间:2023-06-16 17:28:30

Java文件I/O操作函数大全主要介绍 Java 编程中有关文件读写操作的常用类、方法和应用。这是 Java 语言中非常基础和重要的知识点。本文将重点介绍 Java 文件 I/O 的基础概念、 File 类、 InputStream 和 OutputStream 类、 Reader 和 Writer 类等常用类、以及它们的方法的具体用法和示例。

1. 概述

Java 的 I/O 机制主要用于读写文件和网络操作。本篇文章我们重点讲解 Java 文件 I/O 操作,常见的文件 I/O 操作有:读取文件或文件夹、写入文件、复制文件、删除文件、移动文件等。

Java 文件 I/O 操作主要是靠一些类和接口来实现的,常见的类包括 java.io 包中的 File 类、InputStream 和 OutputStream 类、Reader 和 Writer 类等,这些类提供了对文件的读写操作以及流的输入输出等功能。

2. File 类

Java 中 File 类表示文件或目录,可以根据路径或者抽象路径名来表示不同操作系统下的文件。File 类提供了一些常用的方法,如创建文件、删除文件、读取文件属性、判断文件是否存在等等。下面我们来介绍一下常见 File 类的 API。

2.1 创建 File 对象

- File(String pathname):通过指定文件路径来创建 File 对象。

- File(String parent, String child):通过指定父路径和子路径来创建 File 对象。

- File(File parent, String child):通过指定父路径和子路径来创建 File 对象。

- File(java.net.URI uri):通过指定 URI 来创建 File 对象。

示例:

File file1 = new File("D:\\test\\file.txt");

File file2 = new File("D:\\test","file.txt");

File file3 = new File("D:\\test");

File file4 = new File(file3,"file.txt");

2.2 File 对象属性

- getName():获取文件或文件夹名称。

- getParent():获取文件或文件夹的父级路径。

- getPath():获取文件或文件夹的路径。

- isAbsolute():判断文件或文件夹是不是绝对路径。

- length():获取文件长度。

- lastModified():获取文件最后修改时间,返回值为毫秒数。

- delete():删除当前路径对应的文件或目录。

示例:

File file = new File("D:\\test\\file.txt");

System.out.println(file.getName()); // 输出:file.txt

System.out.println(file.getParent()); // 输出:D:\test

System.out.println(file.getPath()); // 输出:D:\test\file.txt

System.out.println(file.isAbsolute()); // 输出:true

System.out.println(file.length()); // 输出:0

System.out.println(file.lastModified()); // 输出:1617716694554

file.delete();

2.3 文件目录操作

- mkdir():创建当前目录。

- mkdirs():创建多级目录。

示例:

File file = new File("D:\\test");

file.mkdir();

2.4 文件读取

- exists():判断文件是否存在。

- canRead():判断文件是否可读。

- canWrite():判断文件是否可写。

- canExecute():判断文件是否可执行。

示例:

File file = new File("D:\\test\\file.txt");

System.out.println(file.exists()); // 输出:false

System.out.println(file.canRead()); // 输出:false

System.out.println(file.canWrite()); // 输出:false

System.out.println(file.canExecute()); // 输出:false

3. InputStream 和 OutputStream

InputStream 和 OutputStream 是 Java 中用于读写二级制数据的基类,它们分别是字节输入流和字节输出流,所有的 Java I/O 类都是从这里继承而来的。InputStream 和 OutputStream 都是抽象类,不能直接被实例化,需要通过具体的子类来创建,常见的子类包括 FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream 等。

3.1 FileInputStream

FileInputStream 用于读取文件的字节流,通常用来读取二进制文件(如图片、音视频、doc、PDF等等)。 FileInputStream 的构造方法可以接收一个文件名或者 File 对象作为参数,这个参数就是要读取的文件名或文件对象。这里给出读取文件流的写法模板:

public static void main(String[] args) {
    InputStream inputStream = null;
    try {
        // 构建 File 实例
        File file = new File("D:\\test\\file.txt");
        // 构建 FileInputStream 实例
        inputStream = new FileInputStream(file);

        // 读取数据
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) != -1) {
            System.out.println(new String(buffer, 0, length, "UTF-8"));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (inputStream != null) {
                inputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2 FileOutputStream

FileOutputStream 用于写入文件的字节流,通常用来写入二进制文件(如图片、音视频、doc、PDF等等)。 FileOutputStream 的构造方法可以接收一个文件名或者 File 对象作为参数,这个参数就是要写入的文件名或文件对象。这里给出写入文件流的写法模板:

public static void main(String[] args) {
    OutputStream outputStream = null;
    try {
        // 构建 File 实例
        File file = new File("D:\\test\\file.txt");
        // 构建 FileOutputStream 实例
        outputStream = new FileOutputStream(file);

        // 写入数据
        byte[] bytes = "hello world".getBytes();
        outputStream.write(bytes);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (outputStream != null) {
                outputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.3 BufferedInputStream 和 BufferedOutputStream

BufferedInputStream 和 BufferedOutputStream 是用于对 FileInputStream 和 FileOutputStream 进行缓存的类,它们的构造函数都需要传入一个 FileInputStream 或 FileOutputStream 对象,产生了新的 FileInputStream 或 FileOutputStream 对象,使流的读写更加高效,常用于文件下载上传、复制等需求。

public static void main(String[] args) {
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try {
        // 构建 File 实例
        File srcFile = new File("D:\\test\\file.txt");
        File dstFile = new File("D:\\test\\file_copy.txt");
        // 构建 BufferedInputStream 实例
        inputStream = new BufferedInputStream(new FileInputStream(srcFile));
        // 构建 BufferedOutputStream 实例
        outputStream = new BufferedOutputStream(new FileOutputStream(dstFile));

        // 读取数据并写入到目标文件
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, length);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (inputStream != null) {
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. Reader 和 Writer

Java 中的 Reader 和 Writer 类是字符输入输出流,它们用于处理字符流,一般用于文本文件。常用子类有 FileReader 和 FileWriter,同样也可以使用 BufferedReader 和 BufferedWriter 进行缓存读写,常用于文件下载上传、复制等需求。

4.1 FileReader 和 FileWriter

FileWriter 是一个写入字符流的类,用于写入字符数据流到文件中,读取数据的方式与 FileInputStream 类似,通常用于写入文本文件,例如写入一段文字,其中缓存大小 name 字段的变量定义在上文中的模板中命名为 blockSize。 FileReader 是一个读取字符流的类,用于读取通过 FileWriter 写入的文件。这里给出读取文件流的写法模板:

`java

public static void main(String[] args) {

Reader reader = null;

try {

// 构建 File 实例

File file = new File("