java 中IO流总结之二 :字符流总结

字符流的抽象父类:ReaderWriter

1)、字符输入流:Reader

Reader 是所有的输入字符流的父类,它是一个抽象类。

2 CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。

3   BufferedReader 就是一个缓冲器缓冲区的出现提高了对数据的读写效率

4   FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号。

InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。

Reader类的常用方法如下:

close():关闭该流并释放与之关联的所有资源。

mark(int readAheadLimit):  标记流中的当前位置。

markSupported():判断此流是否支持 mark() 操作。

read() 读取单个字符。

read(char[] cbuf) 将字符读入数组。

read(char[] cbuf, int off, int len):将字符读入数组的某一部分。

read(CharBuffer target)试图将字符读入指定的字符缓冲区。

ready() 判断是否准备读取此流。

reset()重置该流。

skip(long n) 跳过字符。

 

代码示例如下:字符流读取到缓冲区

//字符读取流缓冲区

FileReader fr=new FileReader("E://abc.txt");

BufferedReader bufr=new BufferedReader(fr);

//bufr.read();//单个字符读取

//System.out.println((char)bufr.read());

String str=null;

while((str=bufr.readLine())!=null){

System.out.println(str);//一行一行的读取

}

bufr.close();

fr.close();

 

以上代码运行结果是,在控制台上打印出文件abc.txt中的内容

 

2):字符输出流:Writer

1、Writer 是所有的输出字符流的父类,它是一个抽象类。

2、CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,

3、BufferedWriter 是一个缓冲器为Writer 提供缓冲功能,提高数据读写效率

4、PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。

5、OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类。功能和使用和OutputStream 

Writer类的常用的方法如下:

 

append(CharSequence csq)将指定字符序列添加到此 writer。

append(CharSequence csq, int start, int end)

 将指定字符序列的子序列添加到此 writer.Appendable。

close() 关闭此流,但要先刷新它。

flush()刷新该流的缓冲。

write(char[] cbuf) 写入字符数组。

write(char[] cbuf, int off, int len)写入字符数组的某一部分。

write(int c) 写入单个字符。

write(String str) 写入字符串。

write(String str, int off, int len)   写入字符串的某一部分。

 

示例代码如下:写数据到缓冲区

 FileWriter fw=new FileWriter("E://abc.txt");

 BufferedWriter bufw=new BufferedWriter(fw); for(int x=1;x<5;x++){

 bufw.write("abcdfg"+x);

 bufw.newLine();//换行

 bufw.flush();

 } 

bufw.close();

fw.close();

 

3)、通过缓冲区复制一个文件

 Demo.java文件内的内容读取出来,写到readercopy.txt文件中

代码如下:

BufferedWriter bufw=null;

BufferedReader bufr=null;

try {

bufw=new BufferedWriter(new FileWriter("E://readercopy.txt"));

bufr=new BufferedReader(new FileReader("E://Demo.java"));

String line=null;

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

bufw.write(line);

bufw.newLine();//换行

bufw.flush();

}

catch (IOException e) {

System.out.println("读写失败!");

}finally{

try {

if(bufw!=null)

bufw.close();

catch (IOException e2) {

throw new RuntimeException("写入失败!");

}

try {

if(bufr!=null)

bufr.close();

catch (IOException e2) {

throw new RuntimeException("读取失败!");

}

你可能感兴趣的:(java IO流 字符流)