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

如何使用Java中的IO流函数读写文件

发布时间:2023-06-14 07:46:45

Java中的IO流函数是一种十分常见和重要的操作,可以用于读取和写入文件,实现读写文件的操作。这篇文章将介绍如何使用Java中的IO流函数读写文件。

一、文件的读取

文件的读取是指将文件中的数据读入到程序中进行处理的过程。在Java中,读取文件常用的类有 FileInputStream 和 BufferedInputStream,这两个类都继承自 InputStream,用法类似。

1. FileInputStream 类的使用方法

FileInputStream 是Java中读取文件的基本类,它提供了多种读取文件的方法,以下是 FileInputStream 的基本调用方法:

// 读取文件  

FileInputStream fileInputStream = new FileInputStream("D:\\test.txt");  

  

// 定义一个byte数组  

byte[] b = new byte[1024];  

  

// 将文件的内容读入到b数组中  

int length = fileInputStream.read(b);  

  

// 将数组中的数据转化为字符串并输出  

System.out.println(new String(b, 0, length));  

  

// 关闭流  

fileInputStream.close();

对上述代码进行详细解析:

① 使用 FileInputStream 对象读取文件

FileInputStream fileInputStream = new FileInputStream("D:\\test.txt");

读取文件需要传递文件路径和文件名到 FileInputStream 的构造函数,如果文件不存在,则会抛出 FileNotFoundException 异常。

② 定义一个byte数组

byte[] b = new byte[1024];

在读取文件时需要定义一个 byte 数组,用于存储文件中的数据。常用的数组大小是1024,因为一次读取1024字节的数据效率比较高。

③ 将文件的内容读入到b数组中

int length = fileInputStream.read(b);

read() 方法用于读取一个字节或者一组字节,并返回一个整数,如果到达文件末尾则返回 -1。如果读取成功,则返回实际读取的字节数。

④ 将数组中的数据转化为字符串并输出

System.out.println(new String(b, 0, length));

将读取的数据转化为字符串,并输出到控制台上。

⑤ 关闭流

fileInputStream.close();

文件读取完成后需要关闭流,避免资源浪费。

2. BufferedInputStream 类的使用方法

BufferedInputStream 是 Java 中读取文件的缓冲类,它能够实现文件的缓存读取,并且可以提高效率,以下是 BufferedInputStream 的基本调用方法:

// 创建 BufferedInputStream 对象  

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\test.txt"));  

  

// 读取文件  

byte[] buffer = new byte[1024];  

  

// 读取文件内容到 buffer 数组中  

int length = bufferedInputStream.read(buffer);  

  

// 输出读取的文件内容  

System.out.println(new String(buffer, 0, length));  

  

// 关闭流  

bufferedInputStream.close();

对上述代码进行详细解析:

① 创建 BufferedInputStream 对象

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\test.txt"));

创建 BufferedInputStream 对象时需要传递 FileInputStream 对象作为参数,以便 BufferedInputStream 对象从 FileInputStream 对象读取数据。

② 读取文件

byte[] buffer = new byte[1024];

定义一个 byte 数组来缓存文件内容,并设置数组大小为1024。

int length = bufferedInputStream.read(buffer);  

读取文件内容,将读取的字节数据存储到 buffer 数组中,返回实际读取的字节数。

③ 输出读取的文件内容

System.out.println(new String(buffer, 0, length));

将读取的字节数据转化为字符串,并输出到控制台上。

④ 关闭流

bufferedInputStream.close();

完成文件读取后需要关闭流,以避免资源浪费。

二、文件的写入

文件的写入是指将程序处理后的数据写入到文件中,可以使用 Java 中的 FileOutputStream 和 BufferedOutputStream 来实现。

1. FileOutputStream 类的使用方法

FileOutputStream 是一种基本的、实现了文件操作的输出流,以下是 FileOutputStream 的基本使用方法:

// 创建 FileOutputStream 对象  

FileOutputStream fileOutputStream = new FileOutputStream("D:\\test.txt");  

  

// 存储数据到文件  

String content = "Hello World! I am learning Java.";  

fileOutputStream.write(content.getBytes());  

  

// 关闭流  

fileOutputStream.close();

对上述代码进行详细解析:

① 创建 FileOutputStream 对象

FileOutputStream fileOutputStream = new FileOutputStream("D:\\test.txt");

创建 FileOutputStream 对象时需要传递文件路径和文件名,如果文件不存在,则会新建一个文件。

② 存储数据到文件

String content = "Hello World! I am learning Java.";  

fileOutputStream.write(content.getBytes());

通过 write() 方法将数据存储到文件中。如果写入成功,则返回1,否则返回 -1。

③ 关闭流

fileOutputStream.close();

完成文件写入后需要关闭流,以避免资源浪费。

2. BufferedOutputStream 类的使用方法

BufferedOutputStream 是文件写入缓冲类,它能够提高写入效率和安全性,以下是 BufferedOutputStream 的基本使用方法:

// 创建缓冲流  

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

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));  

  

String content = "Hello World! I am learning Java.";  

bufferedOutputStream.write(content.getBytes());  

  

// 关闭流  

bufferedOutputStream.flush();  

bufferedOutputStream.close();

对上述代码进行详细解析:

① 创建 BufferedOutputStream 对象

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

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));

创建 BufferedOutputStream 对象时需要传递 FileOutputStream 对象作为参数,以便 BufferedOutputStream 对象将数据写入到 FileOutputStream 对象中。

② 存储数据到文件

String content = "Hello World! I am learning Java.";  

bufferedOutputStream.write(content.getBytes());

通过 write() 方法将数据存储到文件中。如果写入成功,则返回1,否则返回 -1。

③ 关闭流

bufferedOutputStream.flush();  

bufferedOutputStream.close();

完成文件写入后需要关闭流,以避免资源浪费。由于使用了缓冲区,还需要调用 flush() 方法,将缓冲区中的数据刷入文件中。

总结

Java中读取文件和写入文件常见的类是 FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream。使用这些类可以实现Java文件的读写操作。

在使用时需要注意:

1. 先判断文件是否存在,避免异常情况的发生。

2. 进行读取和写入操作的时候,需要使用 try-catch 块处理异常情况。

3. 在读取文件和数据写入后,一定要及时的关闭流,避免资源浪费。

细致而严谨的编程习惯,是良好编程能力及软件工程文化的体现。