1.文本是一种16位无符号整数,是字符unicode编码(双字节编码).
2.文件时byte byte byte ...的数据序列。
3.文本文件是 文本(char)序列按照某种编码方案(utf-8,gbk)序列化为byte的存储结果。
4. 字符流:(reader Writer) 输出/输入流、-------操作是文本文件
字符处理:一次处理一个字符。
InputStreamReader 完成文件(byte)流解析为文本(char)流,按照编码解析
OutputStreamWriter 提供文本(char) 流到文件(byte)流,按照编码处理.
package cn.lanz.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class IsrAndOswDemo { public static void main(String[] args) throws IOException { FileInputStream in=new FileInputStream("e:\\javaio\\lanz.txt"); InputStreamReader isr=new InputStreamReader(in);//转为字符流 FileOutputStream out=new FileOutputStream("e:\\javaio\\lanzs.txt"); OutputStreamWriter osw=new OutputStreamWriter(out, "utf-8"); /* int c; if((c=isr.read())!=-1){ System.out.println((char)c); }*/ char[] buffer=new char[8*1024]; int a; while((a=isr.read(buffer,0,buffer.length))!=-1){ String s=new String(buffer,0,a); System.out.println(s); osw.write(buffer, 0, a); osw.flush(); } osw.close(); out.close(); isr.close(); in.close(); } }
package cn.lanz.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; public class IsrAndOswDemo { public static void main(String[] args) throws IOException { FileInputStream in=new FileInputStream("e:\\javaio\\lanz.txt"); InputStreamReader isr=new InputStreamReader(in);//转为字符流 /* int c; if((c=isr.read())!=-1){ System.out.println((char)c); }*/ char[] buffer=new char[8*1024]; int a; while((a=isr.read(buffer,0,buffer.length))!=-1){ String s=new String(buffer,0,a); System.out.println(s); } isr.close(); in.close(); } }
package cn.lanz.stream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileRAndFileW { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("e:\\javaio\\lanz.txt");//读取 FileWriter fw=new FileWriter("e:\\javaio\\lanzs.txt",true);//写入 ,如果为 true,则将数据写入文件末尾处(追加),而不是写入文件开始处。 char[] buffer=new char[2056]; int c; while((c=fr.read(buffer, 0, buffer.length))!=-1){ fw.write(buffer, 0, c); fw.flush(); } fw.close(); fr.close(); } }
1.BufferedReader ------readLine 一次读取一行
2.BufferedWriter/PrintWriter ---写一行
package cn.lanz.stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class BrAndBwOrPw { public static void main(String[] args) throws IOException { //对文件进行读写操作 BufferedReader br=new BufferedReader(new InputStreamReader (new FileInputStream("e:\\javaio\\lanz.txt")));//读取 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter (new FileOutputStream("e:\\javaio\\lanzs.txt")));//写入 //PrintWriter pw=new PrintWriter("e:\\javaio\\lanzs.txt");//写入,方便 String line; while((line=br.readLine())!=null){ bw.write(line); //单独写出换行操作 bw.newLine(); bw.flush(); // pw.print(line);//加了ln就是换行 // pw.flush(); } bw.close(); br.close(); } }