Java中使用BufferedWriter|BufferedReader

BufferedWriter

概要

BufferedWriter 是 Java IO 类库中的一个类,用于将文本写入字符输出流。它为写入操作提供缓冲区,从而提高了写入字符、数组和字符串的效率。BufferedWriter 类通过减少实际写入底层输出流的次数,显著提高了 I/O 操作的性能。

BufferedWriter 的基本用法

  1. 创建 BufferedWriter

要使用 BufferedWriter,需要将其包装在一个 FileWriter 或其他 Writer 对象中。

BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
  1. 写入数据

BufferedWriter 提供了多种写入数据的方法,如 write()newLine() 等。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write("Hello, World!");
            writer.newLine(); // 写入一个换行符
            writer.write("This is a new line.");
            writer.close(); // 关闭流并刷新缓冲区
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

BufferedWriter 的主要方法

  • write()

write() 方法用于将字符、字符数组或字符串写入缓冲区。

writer.write('A'); // 写入单个字符
writer.write("Hello, World!"); // 写入字符串
char[] chars = {'H', 'e', 'l', 'l', 'o'};
writer.write(chars); // 写入字符数组
  • newLine()

newLine() 方法用于写入一个平台独立的换行符。

writer.newLine();
  • flush()

flush() 方法用于刷新缓冲区,将缓冲区中的数据实际写入底层输出流。

writer.flush();
  • close()

close() 方法用于关闭流,并刷新缓冲区。如果在关闭前不调用 flush()close() 方法会自动调用它。

writer.close();

使用 BufferedWriter 的注意事项

  • 缓冲区大小:默认缓冲区大小通常足够,但在处理大数据量时,可以指定自定义缓冲区大小。

    BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"), 8192);
    
  • 异常处理:所有的 IO 操作都可能抛出 IOException,因此需要适当的异常处理。

  • 关闭流:始终在完成写入操作后关闭流,以释放资源并确保数据写入到底层输出流。


BufferedReader

概要

BufferedReader 是 Java IO 类库中的一个类,用于从字符输入流中读取文本。它为读取操作提供缓冲区,从而提高了读取字符、数组和行的效率。BufferedReader 通过减少实际读取底层输入流的次数,显著提高了 I/O 操作的性能。

BufferedReader 的基本用法

  1. 创建 BufferedReader

要使用 BufferedReader,需要将其包装在一个 FileReader 或其他 Reader 对象中。以下是创建 BufferedReader 的基本语法:

BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
  1. 读取数据

BufferedReader 提供了多种读取数据的方法,如 read()readLine() 等。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

BufferedReader 的主要方法

  • read()

read() 方法用于读取单个字符或字符数组。它有以下几种重载形式:

int c = reader.read(); // 读取单个字符
char[] buffer = new char[1024];
int numCharsRead = reader.read(buffer); // 读取字符数组
  • readLine()

readLine() 方法用于读取一行文本,返回一个字符串。若已到达流的末尾,则返回 null

String line = reader.readLine();
  • skip()

skip() 方法用于跳过指定数量的字符。

reader.skip(100); // 跳过 100 个字符
  • ready()

ready() 方法用于检查是否可以无阻塞地读取字符。

if (reader.ready()) {
    System.out.println("Ready to read!");
}
  • close()

close() 方法用于关闭流,并释放相关资源。

reader.close();

使用 BufferedReader 的注意事项

  • 缓冲区大小:默认缓冲区大小通常足够,但在处理大数据量时,可以指定自定义缓冲区大小。

    BufferedReader reader = new BufferedReader(new FileReader("input.txt"), 8192);
    
  • 异常处理:所有的 IO 操作都可能抛出 IOException,因此需要适当的异常处理。

  • 关闭流:始终在完成读取操作后关闭流,以释放资源并确保数据读取的完整性。

总结

BufferedWriter 是一个强大的工具,用于高效地写入字符流。通过提供缓冲区,它显著减少了写入底层输出流的次数,提高了写操作的性能。BufferedReader 是一个强大的工具,用于高效地读取字符流。


❤觉得有用的可以留个关注~~❤

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用BufferedWriterBufferedReader实现搜索一个单词,在该单词后写入另一个单词的Java代码: ```java import java.io.*; public class SearchAndWrite { public static void main(String[] args) { String searchWord = "apple"; String newWord = "orange"; String fileName = "input.txt"; String tempFile = "temp.txt"; try { File inputFile = new File(fileName); File tempOutputFile = new File(tempFile); BufferedReader reader = new BufferedReader(new FileReader(inputFile)); BufferedWriter writer = new BufferedWriter(new FileWriter(tempOutputFile)); String currentLine; boolean found = false; while ((currentLine = reader.readLine()) != null) { if (currentLine.contains(searchWord)) { found = true; currentLine = currentLine.replace(searchWord, searchWord + " " + newWord); } writer.write(currentLine + System.getProperty("line.separator")); } writer.close(); reader.close(); if (found) { inputFile.delete(); tempOutputFile.renameTo(inputFile); System.out.println("The word \"" + searchWord + "\" was found and replaced with \"" + searchWord + " " + newWord + "\"."); } else { tempOutputFile.delete(); System.out.println("The word \"" + searchWord + "\" was not found in the file."); } } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个例子,我们打开一个名为“input.txt”的文件,并搜索名为“apple”的单词。如果找到了这个单词,我们就在它后面写入一个名为“orange”的单词。我们使用BufferedReaderBufferedWriter来读取和写入文件。我们还创建了一个临时文件,用于写入新的文件内容。 首先,我们打开输入文件和临时输出文件。然后,我们使用BufferedReader逐行读取输入文件,检查是否包含指定的单词。如果找到了指定的单词,我们就在该行的单词后面添加一个空格和新单词,并将修改后的行写入临时文件。如果没有找到指定的单词,我们只是将该行写入临时文件,而不做任何更改。 在写入文件后,我们关闭输入和输出流。如果我们找到了指定的单词并替换了它,我们就将原始输入文件删除,并将临时文件重命名为输入文件的名称。否则,我们只需删除临时文件。 最后,我们向控制台输出消息,指示我们是否找到并替换了指定的单词。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值