首先是 BufferedReader流的使用,如下:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*带有缓冲区的字符输入流 自带缓冲区*/
/*使用这个流的时候不需要自定义byte数组或char数组*/
public class BufferedReaderTest {
public static void main(String[] args) {
BufferedReader br =null;
try {
/*这是前面所学的文件字符输出流*/
/*Reader类是一个抽象类,没办法直接new对象,FileReader 是Reader其中的一个子类*/
FileReader fr = new FileReader("E:\\IDEA\\Java\\StudentTwo\\src\\IOTest\\JavaTest.txt");
/*这个构造方法里面需要传一个Reader类型参数,且只能传字符流,不能传入字节流*/
br = new BufferedReader(fr);
/* 这个地方值得说的是,
当一个构造方法需要一个流的时候,被引进来的流叫节点流,如FileReader
* 外部需要包装这个流,叫做包装流,如BufferedReader*/
String s =null;
while((s= br.readLine())!=null){
/*readLine方法是读一行,但是不会带换行符, 我们下面的println弥补了这个不足*/
System.out.println(s);
}
/*这里没有flush*/
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
/*对于流的关闭,我们只需要关闭最外面这个流就好了,里面的这个流就会自动关闭的*/
if(br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
在上面的程序中,BufferedReader的构造方法只能传字符流,若是字节流怎么办?参考下面的程序进行转换
import java.io.*;
/*在上面的程序中,BufferedReader的构造方法只能传字符流,若是字节流怎么办?*/
public class InputStreamReaderTest {
public static void main(String[] args) {
BufferedReader br = null;
try {
/*此时就是字节输入流*/
FileInputStream fis = new FileInputStream("E:\\IDEA\\Java\\StudentTwo\\src\\IOTest\\JavaTest.txt");
/*将字节输入流转换成字符输入流*/
InputStreamReader isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
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();
}
}
}
}
}
最后,是BufferedWriter流的使用:
public class BufferedWriterTest {
public static void main(String[] args) {
BufferedWriter bw = null;
try {
FileWriter fw = new FileWriter("E:\\IDEA\\Java\\StudentTwo\\src\\IOTest\\JavaTest.txt");
bw = new BufferedWriter(fw);
bw.write("我是社会主义好青年!");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
在上面的程序中,BufferedWriter的构造方法只能传字符流,若是字节流怎么办?参考下面的程序进行转换
import java.io.*;
public class OutputStreamWriterTest {
public static void main(String[] args) {
BufferedWriter bw = null;
try {
FileOutputStream fos = new FileOutputStream("E:\\IDEA\\Java\\StudentTwo\\src\\IOTest\\JavaTest.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
bw = new BufferedWriter(osw);
bw.write("我是社会主义好青年!");
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}