如何使用Java中的IO流函数读写文件
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. 在读取文件和数据写入后,一定要及时的关闭流,避免资源浪费。
细致而严谨的编程习惯,是良好编程能力及软件工程文化的体现。
