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();
}
}
5.FileReader / FileWriter
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();
}
}
6.字符流過濾器
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();
}
}