字符流:就是在字节流的基础上,加上编码,形成的数据流
字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。
字符输入流:Reader
常用子类:FileReader
文件字符输入流常用方法:
read();
read(char[ ]);
read(char[ ] ,offset,len);
字符输出流: Writer
常用子类:文件字符输出流: Filewriter
文件字符输出常用方法:
writer();
writer(char[ ]);
writer(char[ ],offset,len);
writer(string);
flush()刷新缓冲区
注意:close()方法默认调用了flush()方法,但是flush()方法只刷新缓冲区,而close()还会关闭IO流
字符输入流代码示例:
1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.IOException; 4 5 public class Demo5 { 6 7 public static void main(String[] args) throws IOException{ 8 FileReader fr=new FileReader(new File("1.txt")); 9 char[] ca=new char[1024];10 int count=0;11 while((count=fr.read(ca))!=-1) {12 System.out.println(new String(ca,0,count));13 }14 }15 }运行结果:
字符输出流代码示例:
1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.FileWriter; 4 import java.io.IOException; 5 6 public class Demo6 { 7 8 public static void main(String[] args) throws IOException{ 9 FileReader fr=new FileReader(new File("1.txt"));10 FileWriter fw=new FileWriter(new File("2.txt"));11 char[] ca=new char[1024];12 int count;13 while((count=fr.read(ca))!=-1) {14 fw.write(ca,0,count);15 }16 fr.close();17 fw.close();18 }19 }
执行结果:
字符流与字节流的区别:字符流虽然以字节流为基础创建的,但是字节流可以支持声音,视频,图片,文本等所有文件类型,而字符流只支持文