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

Java中如何使用字节流和字符流读取和写入文件?

发布时间:2023-06-21 06:54:35

Java中提供了两种常见的文件读取和写入方式——字节流和字符流。

1.字节流

Java中的字节流是InputStream和OutputStream,它们是所有字节流的抽象基类,分别用于从文件中读取和写入数据。InputStream和OutputStream是字节流处理的基本类,可以用来处理任何类型的数据。下面是一些常见的文件操作方法:

1)读取文件:

通过InputStream读取文件内容的步骤如下:

1.  创建一个 FileInputStream 对象,打开要读取的文件,例如:FileInputStream inputStream = new FileInputStream("c:\\temp\\input.txt");

2.  从文件中读取内容,例如:

    byte[] buffer = new byte[1024];

    

    int bytesRead;

    

    while ((bytesRead = inputStream.read(buffer)) != -1) {

    

      // 处理读取的数据

    

    }

    

3.  关闭文件输入流,例如:inputStream.close();

2)写入文件:

通过OutputStream写入文件内容的步骤如下:

1.  创建一个 FileOutputStream 对象,指定文件路径,例如:

    FileOutputStream outputStream = new FileOutputStream("c:\\temp\\output.txt");

    

2.  将数据写入输出流,例如:

    outputStream.write("Hello World".getBytes());

    

3.  关闭文件输出流,例如:outputStream.close();

使用字节流的优点是可以处理任何类型的数据,以二进制形式进行存储和传输,但是它们仅能以字节为单位进行读取和写入操作,无法处理字符编码,所以需要配合使用字符编码转换类进行使用。

2.字符流

Java中的字符流是Reader和Writer类,它们是所有字符流的抽象基类,分别用于从文件中读取和写入字符数据。Reader和Writer是面向字符的流处理类,可以方便地处理字符编码问题,以及支持国际化的文本处理,一般用于文本文件的读入/写出。下面是一些常见的文件操作方法:

1)读取文件:

通过Reader读取文件内容的步骤如下:

1.  创建一个 FileReader 对象,打开要读取的文件,例如:FileReader reader = new FileReader("c:\\temp\\input.txt");

2.  从文件中读取内容,例如:

    char[] buffer = new char[1024];

    

    int charsRead;

    

    while ((charsRead = reader.read(buffer)) != -1) {

    

      // 处理读取的数据

    

    }

    

3.  关闭文件输入流,例如:reader.close();

2)写入文件:

通过Writer写入文件内容的步骤如下:

1.  创建一个 FileWriter 对象,指定文件路径,例如:

    FileWriter writer = new FileWriter("c:\\temp\\output.txt");

    

2.  将数据写入输出流,例如:

    writer.write("Hello World");

    

3.  关闭文件输出流,例如:writer.close();

使用字符流的优点是支持字符编码转换和国际化的文本处理,适用于文本文件的读入/写出,但是它们不能直接处理二进制数据,所以如果需要读取/写出二进制文件,则需要先使用字节流读取/写出二进制数据,再进行字符编码转换。

总结:

字节流和字符流各有优劣,应根据具体需求选择使用,如果需要处理二进制数据,可以使用字节流,如果需要处理文本数据,则可以使用字符流。在实际使用中,可以根据需要结合使用字节流和字符流,实现更加灵活的文件读写操作。