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

Java输入输出流函数:如何读写文件

发布时间:2023-06-16 01:48:42

Java 的输入输出流是对标准输入输出(stdin 和 stdout)的封装,可以通过它们实现与文件,网络,内存等各种设备的交互,方便读写数据。本文将介绍如何使用 Java 输入输出流函数读写文件。

输入输出流分类

Java 中的输入输出流主要有四种类型:

1. 字节流:以字节为单位读写数据。InputStream 和 OutputStream 是它们的抽象基类。

2. 字符流:以字符为单位读写数据。Reader 和 Writer 是它们的抽象基类。

3. 字节缓冲流:缓存字节流,提高读写性能。BufferedInputStream 和 BufferedOutputStream 是它们的具体实现类。

4. 字符缓冲流:缓存字符流,提高读写性能。BufferedReader 和 BufferedWriter 是它们的具体实现类。

文件读写

我们来看一个从文件中读取数据,并保存到文件中的例子:

import java.io.*;

public class FileReadWriteDemo {
    public static void main(String[] args) {
        String filePath = "input.txt";
        String resultFilePath = "output.txt";
        try {
            FileInputStream fileInputStream = new FileInputStream(filePath);
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

            // 从文件中读取数据
            byte[] buffer = new byte[1024];
            int length = bufferedInputStream.read(buffer);
            String data = new String(buffer, 0, length);

            System.out.println("从文件" + filePath + "中读取的数据:");
            System.out.println(data);

            // 将数据保存到文件
            FileOutputStream fileOutputStream = new FileOutputStream(resultFilePath);
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

            byte[] dataBytes = data.getBytes();
            bufferedOutputStream.write(dataBytes);

            // 关闭流
            bufferedInputStream.close();
            bufferedOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个例子中,我们首先使用 FileInputStream 打开要读取的文件,并将其传给 BufferedInputStream 进行缓存,然后使用 read 方法读取文件中的数据,得到一个 byte 数组。我们再将 byte 数组转换成字符串,打印出来。

接着,我们使用 FileOutputStream 打开要输出的文件,并将其传给 BufferedOutputStream 进行缓存,最后使用 write 方法将数据流写入文件中。

这里我们用了 BufferedInputStream 和 BufferedOutputStream 去实现读写文件,相比未使用缓存的 InputStream 和 OutputStream,速度更快,效率更高。

总结

Java 的输入输出流提供了一种便捷的方式来进行数据读写操作。通过输入输出流,我们可以轻松处理文件、网络和内存等设备,还可以使用缓存流可以提高读写性能。同时,我们还需要注意适时关闭输入输出流,避免资源浪费和数据丢失。