1 字符输入流Reader
l read():读取单个字符并返回
l read(char[]):将数据读取到数组中,并返回读取的个数。
public class Demo01 { public static void main(String[] args) throws IOException { //明确数据源 FileReader fr=new FileReader("D:\test\s.txt"); //一个字符一个字符的读 /*int len=0; while((len=fr.read())!=-1){ System.out.print((char)len+" "); }*/ //一个字符数组的读 char[]ch=new char[2]; int len=0; while((len=fr.read(ch))!=-1){ System.out.println(new String(ch,0,len)); } //释放资源 fr.close(); } }
2 字符输出流Writer
flush():将流中的缓冲区缓冲的数据刷新到目的地中,刷新后,流还可以继续使用。
close():关闭资源,但在关闭前会将缓冲区中的数据先刷新到目的地,否则丢失数据,然后在关闭流。流不可以使用。如果写入数据多,一定要一边写一边刷新,最后一次可以不刷新,由close完成刷新并关闭。
public class Demo02 { public static void main(String[] args) throws IOException { // 明确目的地 FileWriter fw = new FileWriter("D:\test\b.txt"); // 写一个字符 fw.write(100); fw.flush(); //写字符数组 char[]ch={'你','是','啥','a'}; fw.write(ch,2,2); fw.write("你好啊".toCharArray()); fw.write("你好啊"); fw.flush(); // 释放资源 fw.close(); } }
3 字符流复制文本
public class Demo03 { public static void main(String[] args) throws IOException { //文件复制 //明确数据源 FileReader fr=new FileReader("D:\test\b.txt"); //明确目的地 FileWriter fw=new FileWriter("D:\test\e\b.txt"); //开始复制 char []ch=new char[1024]; int len=0; while((len=fr.read(ch))!=-1){ fw.write(ch,0,len); fw.flush(); } fr.close(); fw.close(); } }