Java中BufferedReader和BufferedWriter使用方式

目录
  • FileWriter/FileReader
  • BufferedReader/BufferedWriter

FileWriter/FileReader

介绍:FileWriter 类从 OutputStreamWriter 类继承而来。该类按字符向流中写入数据。

构造:参数为 File 对象

FileWriter(File file)

参数是文件的路径及文件名(默认是当前执行文件的路径)

FileWrite(String filename)

等价于:

OutputStreamWriter out = new OutputStreamWriter(
	new FileOutputStream(File file))

方法:

序号 方法描述
1 public void write(int c) throws IOException 写入单个字符c。
2 public void write(char [] c, int offset, int len) 写入字符数组中开始为offset长度为len的某一部分。
3 public void write(String s, int offset, int len) 写入字符串中开始为offset长度为len的某一部分。

栗子:

public class Main {
    public static void main(String[] args) throws Exception {
        File file = new File("d:/abc/f10");
        // 创建文件
        file.createNewFile();
        // creates a FileWriter Object
        FileWriter writer = new FileWriter(file);
        // 向文件写入内容
        writer.write("This\n is\n an\n example\n");
        writer.flush();
        writer.close();
        // 创建 FileReader 对象
        FileReader fr = new FileReader(file);
        char[] a = new char[50];
        fr.read(a); // 从数组中读取内容
        for (char c : a)
            System.out.print(c); // 一个个打印字符
        fr.close();
    }
}

运行程序会在 D 盘 abc 文件夹下创建 f10,同时打印内容如下:

BufferedReader/BufferedWriter

介绍:BufferedReader 类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行。

可以通过构造函数指定缓冲区大小也可以使用默认大小。对于大多数用途,默认值足够大。

由 Reader 构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成,建议通过 BufferedReader 包装 Reader 的实例类以提高效率。(Reader 构成的对象是字符对象,每次的读取请求都会涉及到字节读取解码字符的过程,而 BufferedReader 类中有设计减少这样的解码次数的方法,进而提高转换效率)

创建对象:

BufferedReader in  = new BufferedReader(new FileReader(“foo.in”));

方法BufferedReader 由 Reader 类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine(),读取一个文本行,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

readLine()读取一行字符串,不含末尾换行符,读取结束再读取返回 null。

栗子1:写入

BufferedWriter bufw = new BufferedWriter(new FileWriter("d:/abc/f11"));
bufw.write("This");
bufw.newLine();
bufw.newLine();
bufw.write("is");
bufw.write("an");
bufw.write("example");
//使用缓冲区中的方法,将数据刷新到目的地文件中去。
bufw.flush();
//关闭缓冲区,同时关闭了fw流对象
bufw.close();

运行结果会在 D 盘 abc 文件夹下新建 f11 文件

栗子2:读取

//相接的字符流,只要读取字符,都要做编码转换
        //只要使用字符流,必须要有转换流
        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("d:/abc/f11")));

        String line;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }
        in.close();

运行结果:

到此这篇关于Java中BufferedReader和BufferedWriter使用方式的文章就介绍到这了,更多相关Java BufferedReader内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中BufferedReader与BufferedWriter类的使用示例

    BufferedReader BufferedReader 是缓冲字符输入流.它继承于Reader. BufferedReader 的作用是为其他字符输入流添加一些缓冲功能. 创建BufferReader时,我们会通过它的构造函数指定某个Reader为参数.BufferReader会将该Reader中的数据分批读取,每次读取一部分到缓冲中:操作完缓冲中的这部分数据之后,再从Reader中读取下一部分的数据. 为什么需要缓冲呢?原因很简单,效率问题!缓冲中的数据实际上是保存在内存中,而原始数据可能

  • Java BufferedWriter BufferedReader 源码分析

    一:BufferedWriter 1.类功能简介: BufferedWriter.缓存字符输出流.他的功能是为传入的底层字符输出流提供缓存功能.同样当使用底层字符输出流向目的地中写入字符或者字符数组时.每写入一次就要打开一次到目的地的连接.这样频繁的访问不断效率底下.也有可能会对存储介质造成一定的破坏.比如当我们向磁盘中不断的写入字节时.夸张一点.将一个非常大单位是G的字节数据写入到磁盘的指定文件中的.没写入一个字节就要打开一次到这个磁盘的通道.这个结果无疑是恐怖的.而当我们使用Buffered

  • Java中BufferedReader和BufferedWriter使用方式

    目录 FileWriter/FileReader BufferedReader/BufferedWriter FileWriter/FileReader 介绍:FileWriter 类从 OutputStreamWriter 类继承而来.该类按字符向流中写入数据. 构造:参数为 File 对象 FileWriter(File file) 参数是文件的路径及文件名(默认是当前执行文件的路径) FileWrite(String filename) 等价于: OutputStreamWriter ou

  • Java中BufferedReader类获取输入输入字符串实例

    使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字符串,在某些时候并不适用,因为使用者可能输入一个字符串,中间会包括空白字元,而您希望取得完整的字符串. 您可以使用BufferedReader类别,它是java.io包中所提供的一个类,所以使用这个类时必须先import java.io包:使用BufferedReader对象的readLine()方法必须处理IOException异常(exception),异常处理机制是Java提供给程序设计人员捕捉程序中可能发生的错误所

  • Java中的3种输入方式实现解析

    这篇文章主要介绍了Java中的3种输入方式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.从键盘读取char类型数据 char ch = (char)System.in.read(); System.in 提供的 read() 方法每次只能读取一个字节的数据,所以用的频率比较低. 2.BufferedReader 实现从键盘读取String类型数据 使用BufferedReader 对象的 readLine() 方法必须处理 jav

  • 浅谈Java中的四种引用方式的区别

    强引用.软引用.弱引用.虚引用的概念 强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用: Object object = new Object(); String str = "hello"; 只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象. 比如下面这段代码: public class Main { publi

  • Java中动态规则的实现方式示例详解

    背景 业务系统在应用过程中,有时候要处理"经常变化"的部分,这部分需求可能是"业务规则",也可能是"不同的数据处理逻辑",这部分动态规则的问题,往往需要可配置,并对性能和实时性有一定要求. Java不是解决动态层问题的理想语言,在实践中发现主要有以下几种方式可以实现: 表达式语言(expression language) 动态语言(dynamic/script language language),如Groovy 规则引擎(rule engine

  • 浅谈在Java中JSON的多种使用方式

    1. 常用的JSON转换 JSONObject 转 JSON 字符串 JSONObject json = new JSONObject(); jsonObject.put("name", "test"); String str = JSONObject.toJSONString(json); JSON字符串转JSON String str = "{\"name\":\"test\"}"; JSONObjec

  • 浅谈java中HashMap键的比较方式

    先看一个例子 Integer integer=12344; Integer integer1=12344; 在Java中Integer 和Integer1是不相等的,但是如果再执行如下语句 map.put(integer, 1); map.put(integer1, 2); 会发现2会把1覆盖,问题来了,明明是两个不同的对象,为什么,2会把1覆盖呢? 我们看HashMap中添加键的源代码,如下 可以发现我们传进来的键交给了一个hash的成员方法区处理,这里我们看看hash方法的源码 哦,看到这里

  • Java中创建对象的6种方式

    目录 背景 创建对象的 6 种方式 方法1:new 一个对象 方法2:克隆一个对象 方法3:类派发一个对象(反射) 方法4:动态加载一个对象(反射) 方法5:构造一个对象(反射) 方法6:反序列化一个对象 总结 背景 本文教你创建对象的 6 种方式,从低端到高端,各种创建方式,总有一个适合你,没有对象的自己生成一个吧! 创建对象的 6 种方式 假设有个女朋友类: @Data @NoArgsConstructor @AllArgsConstructor class GirlFriend { pri

  • Java中的final关键字使用方式

    目录 一.final概述 二.使用方式 修饰类 修饰方法 修饰变量 局部变量—引用类型 成员变量 一.final概述 子类可以在父类的基础上改写父类内容,比如,方法重写.那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的.为了避免这种随意改写的情况,Java提供了final 关键字,用于修饰不可改变内容.final: 不可改变.可以用于修饰类.方法和变量. 类:被修饰的类,不能被继承. 方法:被修饰的方法,不能被重写. 变量:被修饰的变量,不能被重新赋值. 二.使用方式 修

随机推荐