Java缓冲流

BufferedReader和BufferedWriter类创建的对象称为缓冲输入、输出流,两者增强了读写文件的能力。BufferedReader流和BufferedWriter流,二者的源和目的地必须是字符输入流reader和字符输出流writer。

BufferedReader和BufferedWriter类的构造方法分别是:

BufferedReader(Reader in);

BufferedWriter(Writer out);

BufferedReader流能够读取文本行,方法是readLine();

BufferedWriter流有一个独特的想问你那写入一个回车符的方法newLine();

写一个小例子加深记忆:

import java.io.*;
import java.util.StringTokenizer;

public class Example10_7 {
    public static void main(String[] args) {
        File fRead = new File("D:/JavaProject/JavaShiYan/src/com/java/zhang10/","test.txt");
        File fWrite = new File("D:/JavaProject/JavaShiYan/src/com/java/zhang10/","result.txt");
        try{
            Reader in = new FileReader(fRead);
            BufferedReader bufferedReader = new BufferedReader(in);
            Writer out = new FileWriter(fWrite,true);
            BufferedWriter bufferedWriter = new BufferedWriter(out);
            String str = null;
            while ((str=bufferedReader.readLine())!=null){
//                StringTokenizer会分割句子,以指定的符号或者标记,默认可以是空格回车等
                StringTokenizer fenxi = new StringTokenizer(str);
//                StringTokenizer类的countTokens方法会统计分割后的字符串
                int count = fenxi.countTokens();
                str = str+" 句子中单词的个数"+count;
                bufferedWriter.write(str);
                bufferedWriter.newLine();
            }
            bufferedWriter.close();
            out.close();
            in = new FileReader(fRead);
            bufferedReader = new BufferedReader(in);
            String s = null;
            System.out.println(fWrite.getName()+"内容是:");
            while ((s=bufferedReader.readLine())!=null){
                System.out.println(s);
            }
            bufferedReader.close();
            in.close();
        }catch (IOException e){
            System.out.println(e);
        }
    }
}

test文件存在内容且内容是这样:

I am chinese
I love CHINA
Happy every day

result文件是空文件,运行后是这样;

I am chinese 句子中单词的个数3
I love CHINA 句子中单词的个数3
Happy every day 句子中单词的个数3
### Java 缓冲流的使用方法与示例详解 #### 1. 缓冲流概述 Java 中的缓冲流通过对底层数据流进行封装,在内存中创建一个临时存储区域(即缓冲区),从而减少频繁的磁盘读写操作,提升程序性能。常见的缓冲流有 `BufferedInputStream`、`BufferedOutputStream`、`BufferedReader` 和 `BufferedWriter`。 这些类分别用于字节流和字符流的操作,并提供更高的效率和便捷的功能[^1]。 --- #### 2. 字节流缓冲:`BufferedInputStream` 和 `BufferedOutputStream` ##### 工作原理 当使用 `BufferedInputStream` 或 `BufferedOutputStream` 时,数据会先被加载到内部缓冲区中再执行后续操作。这种方式减少了每次调用操作系统 I/O 方法的开销,显著提高了文件或其他资源的访问速度[^2]。 ##### 示例代码 以下是一个简单的例子,展示如何利用 `BufferedInputStream` 和 `BufferedOutputStream` 进行文件复制: ```java import java.io.*; public class BufferedStreamExample { public static void main(String[] args) { File inputFile = new File("input.txt"); File outputFile = new File("output.txt"); try ( InputStream inputStream = new FileInputStream(inputFile); BufferedInputStream bufferedInput = new BufferedInputStream(inputStream); OutputStream outputStream = new FileOutputStream(outputFile); BufferedOutputStream bufferedOutput = new BufferedOutputStream(outputStream) ) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = bufferedInput.read(buffer)) != -1) { bufferedOutput.write(buffer, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码展示了如何通过缓冲流高效地完成文件拷贝任务[^3]。 --- #### 3. 字符流缓冲:`BufferedReader` 和 `BufferedWriter` ##### 特性说明 对于基于文本的数据处理场景,可以选用 `BufferedReader` 和 `BufferedWriter` 类型的缓冲流。其中,`BufferedWriter` 不仅支持高效的写入操作,还额外提供了诸如 `newLine()` 等实用功能[^4]。 ##### 示例代码 下面是一段演示如何向文件追加多行字符串并自动换行的例子: ```java import java.io.*; public class BufferedWriterExample { public static void main(String[] args) { String filePath = "example.txt"; try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { writer.write("First line of text."); writer.newLine(); // 自动添加系统默认换行符 writer.write("Second line with more content."); } catch (IOException e) { e.printStackTrace(); } System.out.println("Text written successfully!"); } } ``` 此代码片段清楚地体现了 `BufferedWriter` 的灵活性及其对复杂文本编辑的支持能力。 --- #### 4. 实际应用场景分析 在实际开发过程中,合理运用缓冲流可以帮助开发者优化应用程序的整体表现。例如,在大数据量传输或者日志记录等场合下,采用带缓存机制的输入/输出方式往往能带来明显的性能改善效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值