java IO流之BufferedReader和BufferedWriter

简介: BufferedReader和BufferedWriter一、简介:二、使用BufferedReader案列BufferedReader 中文乱码解决方案解决方案;三、BufferedWriter使用案例

一、简介:


BufferedReader 用于加快读取字符的速度, BufferedWriter 用于加快写入的速度


BufferedReader 和 BufferedWriter 类各拥有 8192 个字符的缓冲区。


属于字符流,按照字符读取数据的


二、使用BufferedReader案列


1.使用它读取文本文件,并显示在控制台


步骤;


1.创建读取的文件


2.创建BufferedReader


3.读取


4.关闭流


package com.xbfinal.day02;
import java.io.BufferedReader;
import java.io.FileReader;
/**
 *演示BufferedReader的使用 
 * 
 */
public class BufferedReader_ {
  public static void main(String[] args) throws Exception{
    //1.创建读取的文件
    String filePath="f:\\01.txt";
    //2.创建BufferedReader
    BufferedReader buf=new BufferedReader(new FileReader(filePath));
    //读取(其实底层是FileReader)
    String line;
    //按行读取文件,当返回null表示文件读取完毕
    while((line=buf.readLine())!=null) {
      System.out.println(line);
    }
    //关闭流(本身应该关闭FileReader 但是实际上只需要关闭BufferedReader)
    buf.close();//底层会自动关闭节点流
  }
}

e70ff6ba95cb4c90aee535062d468878.png


可见上面代码中文乱码了


bufferedReader会以系统默认的编码字符集获取文件内容。如果解析设置的编码字符集与系统默认编码字符集不一致,则会出现乱码问题。


BufferedReader 中文乱码解决方案解决方案;


BufferedReader buf=new BufferedReader(new FileReader(filePath));
换成
InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath), "UTF-8");
    BufferedReader buf=new BufferedReader(isr);


效果:


package com.xbfinal.day02;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
 *演示BufferedReader的使用 
 * 
 */
public class BufferedReader_ {
  public static void main(String[] args) throws Exception{
    //1.创建读取的文件
    String filePath="f:\\01.txt";
    //2.创建BufferedReader
    InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath), "UTF-8");
    BufferedReader buf=new BufferedReader(isr);
    //读取(其实底层是FileReader)
    String line;
    //按行读取文件,当返回null表示文件读取完毕
    while((line=buf.readLine())!=null) {
      System.out.println(line);
    }
    //关闭流(本身应该关闭FileReader 但是实际上只需要关闭BufferedReader)
    buf.close();//底层会自动关闭节点流
  }
}


22a86e077c4f47cca0ee32031d2187eb.png


三、BufferedWriter使用案例

2ad9a0543d9e42b98cec428b44b1ec43.png


hello,笑霸final写入文件


步骤


1.文件写入的路径


2.创建对象


3.写入内容


4.关闭流对象


package com.xbfinal.day02;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
//演示BufferedWriter的使用
public class BufferedWriter_ {
  public static void main(String[] args)throws IOException {
    //文件写入的路径
    String filePath="f:\\xbfinal.txt";
    //准备写入的内容
    BufferedWriter buf=new BufferedWriter(new FileWriter(filePath));
    buf.write("hello,笑霸final");
    buf.newLine();//插入一个换行符;
    buf.write("hello1,笑霸final");
    buf.write("hello2,笑霸final");
    buf.close();
  }
}


25eaf08af5a14f8aaf8514fdb8dfada3.png


追加代码


改动一个地方


BufferedWriter buf=new BufferedWriter(new FileWriter(filePath,true));



然后就能完成追加了

fb39fc3e463f442a900f3a24cb9b2339.png

目录
相关文章
|
2月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
52 9
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
95 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
46 1
|
3月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
115 1
|
4月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
254 12
|
3月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
69 0
|
3月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
43 0
|
Java
java 通过bufferedReader和bufferedWriter 拷贝文件
/** * @time 2014-8-15 下午05:00:58 * @author new * @function 通过bufferedReader和bufferedWriter 拷贝文件 * */ package com.neusoft.copyfile; import java.io.BufferedReader; import java.io.BufferedWri
1484 0
|
7天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
9天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。