带缓存的字符输入输出流

带缓存的字符输入输出流

  BufferedWriter:

              public voidnewLine():根据系统来决定换行符

  BufferedReader:

              public String readLine():一次读取一行数据

              包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

BufferedReader(Reader in)

示例1:BufferedReader读数据

//创建字符缓冲输入流对象

BufferedReaderbr = new BufferedReader(new FileReader("bw2.txt"));

// public String readLine():一次读取一行数据

// String line = br.readLine();

// System.out.println(line);

// line = br.readLine();

// System.out.println(line);

// 最终版代码

Stringline= null;

while ((line = br.readLine()) != null) {

    System.out.println(line);

}

//释放资源

br.close();

示例2:自定义缓冲区

//创建字符缓冲输入流对象

BufferedReaderbr = new BufferedReader(new FileReader("bw.txt"));

// 方式1

// int ch = 0;

// while ((ch = br.read()) != -1) {

// System.out.print((char) ch);

// }

// 方式2

char[] chs = newchar[1024];

int len = 0;

while ((len = br.read(chs)) != -1) {

    System.out.print(new String(chs, 0, len));

}

// 释放资源

br.close();

BufferedWriter

BufferedWriter:字符缓冲输出流

 * 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

 * 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

示例1:BufferedWriter写数据

//BufferedWriter(Writer out)

// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(

// new FileOutputStream("bw.txt")));

BufferedWriterbw = new BufferedWriter(new FileWriter("bw.txt"));

bw.write("hello");

bw.write("world");

bw.write("java");

bw.flush();

bw.close();

示例2:

//创建字符缓冲输出流对象

BufferedWriterbw = new BufferedWriter(new FileWriter("bw2.txt"));

for (int x = 0; x < 10; x++) {

    bw.write("hello"+ x);

    //bw.write("\r\n");

    bw.newLine();

    bw.flush();

}

bw.close();

示例:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中

分析:

  数据源:

                a.txt-- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader -- BufferedReader

  目的地:

                b.txt-- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter – BufferedWriter

代码1

//封装数据源

BufferedReaderbr = new BufferedReader(new FileReader("a.txt"));

// 封装目的地

BufferedWriterbw = new BufferedWriter(new FileWriter("b.txt"));

// 读写数据

Stringline= null;

while ((line = br.readLine()) != null) {

    bw.write(line);

    bw.newLine();

    bw.flush();

}

// 释放资源

bw.close();

br.close();

代码2

//封装数据源

BufferedReaderbr = new BufferedReader(new FileReader("a.txt"));

// 封装目的地

BufferedWriterbw = new BufferedWriter(new FileWriter("b.txt"));

// 两种方式其中的一种一次读写一个字符数组

char[] chs = newchar[1024];

int len = 0;

while ((len = br.read(chs)) != -1) {

    bw.write(chs,0, len);

    bw.flush();

}

// 释放资源

bw.close();

br.close();

 

你可能感兴趣的:(java)