一.BufferedReader
方法readLine()可直接读取一行 ,但是不带有换行符
package com.io;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
BufferReader:
带有缓冲区的字符输入流
使用这个流的时候后不需要使用char数组,或是说不需要自定义byte数组,自带缓冲
*/
public class BufferedReaderTest01 {
public static void main(String[] args) {
FileReader reader = null;
BufferedReader br = null;
try {
reader = new FileReader("copy01.java");
//当一个流的构造方法中需要一个流的时候,这个被传进来的流叫节点流
//外部负责包装的这个流,叫做:包装流,或者叫做:处理流
//相当前这个程序来说 FileReader是一个节点流 BUfferedReader就是一个包装流/处理流
br = new BufferedReader(reader);
//读一行
// String firstLine = br.readLine();
// System.out.println(firstLine);
// String secondLine = br.readLine();
// System.out.println(secondLine);
// String line3 = br.readLine();
// System.out.println(line3);
//br.readLine() 读取一个文本行,但是不带换行符
String s = null;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//对于包装流来说,只需要关闭最外层流即可,里面的节点流会自动关闭(看源码可知)
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
二.InputStreamReader
package com.io;
import java.io.*;
/*
转换流
*/
public class BufferedReaderTest02 {
public static void main(String[] args) {
BufferedReader br =null;
try {
// //字节流
// FileInputStream in = new FileInputStream("copy01.java");
// //InputStreamReader 将字节流转换成字符流
// //in 是节点流 reader是包装流
// InputStreamReader reader = new InputStreamReader(in);
// //这个构造方法只能传入一个字符流,不能使用字节流
// //reader是节点流 br是包装流
// br = new BufferedReader(reader);
//合并:
br = new BufferedReader(new InputStreamReader(new FileInputStream("copy01.java")));
String line =null;
while((line = br.readLine())!=null){
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
三.BufferedWriter与OutStreamWriter
package com.io;
import java.io.*;
/*
BufferedWriter :带有缓冲的字符输出流
*/
public class BufferedWriterTest {
public static void main(String[] args) {
BufferedWriter out = null;
try {
//out = new BufferedWriter(new FileWriter("copy02.java"));
out =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy2.java")));
//带有缓冲区的字符输出流
out.write("hello world!");
out.write("\n");
out.write("hello Acofkings");
//刷新
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}