InputStreamReader類與OutputStreamWriter類
InputStreamReader
將字節流轉換爲字符流。是字節流通向字符流的橋樑。如果不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。
構造方法:
InputStreamReader isr = new InputStreamReader(InputStream in);//構造一個默認編碼集的InputStreamReader類
InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//構造一個指定編碼集的InputStreamReader類。
參數 in(InputStream )對象獲得方法:
InputStream in = System.in;//讀取鍵盤上的數據。
InputStream in = new FileInputStream(String fileName);//讀取文件中的數據。
InputStreamReader 主要方法:
int read();//讀取單個字符。
int read(char []cbuf);//將讀取到的字符存到數組中。返回讀取的字符數。
例子:
public static void main(String[] args) throws IOException {
// 讀取字節流
FileInputStream fis = new FileInputStream("d:\\ab.txt");
// 將字節流向字符流的轉換。
InputStreamReader isr = new InputStreamReader(fis);
//創建字符流緩衝區 使用緩衝區 可以使用緩衝區對象的 read()
// 和 readLine()方法。
BufferedReader bufr = new BufferedReader(isr);
String line = null;
while ((line = bufr.readLine()) != null) {
System.out.println(line);
}
isr.close();
}
OutputStreamWriter 將字節流轉換爲字符流。是字節流通向字符流的橋樑。如果不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。
構造方法:
OutputStreamWriter osw = new OutputStreamWriter(OutputStream out);//構造一個默認編碼集的OutputStreamWriter類
OutputStreamWriter osw = new OutputStreamWriter(OutputStream out,String charsetName);//構造一個指定編碼集的OutputStreamWriter類。
參數對象(OutputStream)
InputStream out = System.out;獲得。//打印到控制檯上。
InputStream out = new FileoutputStream(String fileName);//輸出到文件中
主要方法:
void write(int c);//將單個字符寫入。
viod write(String str,int off,int len);//將字符串某部分寫入。
void flush();//將該流中的緩衝數據刷到目的地中去。
例子:
public static void main(String[] args) throws IOException {
OutputStream out = new FileOutputStream("D:\\ab.txt");// 打印到文件。
OutputStreamWriter osr = new OutputStreamWriter(out);// 輸出
BufferedWriter bufw = new BufferedWriter(osr);// 緩衝
String str = "你 ff 好嗎?\r\n我很好!";// 你好嗎?
bufw.write(str);
bufw.flush();
bufw.close();
osr.close();
out.close();
}
FileReader類與FileWriter類
1.FileWriter類(字符輸出流類)
繼承OutputStreamWriter
構造方法:
FileWriter fw = new FileWriter(String fileName);//創建字符輸出流類對象和已存在的文件相關聯。文件不存在的話,並創建。如 FileWriter fw = new FileWriter("C:\\demo.txt");
FileWriter fw = new FileWriter(String fileName,boolean append);//創建字符輸出流類對象和已存在的文件相關聯,並設置該該流對文件的操作是否爲續寫。如:FileWriter fw = new FileWriter("C:\\demo.txt",ture); //表示在fw對文件再次寫入時,會在該文件的結尾續寫,並不會覆蓋掉。
主要方法:
void write(String str) //寫入字符串。當執行完此方法後,字符數據還並沒有寫入到目的文件中去。此時字符數據會保存在緩衝區中。此時在使用刷新方法就可以使數據保存到目的文件中去。
viod flush() //刷新該流中的緩衝。將緩衝區中的字符數據保存到目的文件中去。
viod close() //關閉此流。在關閉前會先刷新此流的緩衝區。在關閉後,再寫入或者刷新的話,會拋IOException異常。
2.FileReader類
繼承InputStreamReader
1,構造方法
FileReader fr = new FileReader(String fileName);//使用帶有指定文件的String參數的構造方法。創建該輸入流對象。並關聯源文件。
2,主要方法
int read(); // 讀取單個字符。返回作爲整數讀取的字符,如果已達到流末尾,則返回 -1。
int read(char []cbuf);//將字符讀入數組。返回讀取的字符數。如果已經到達尾部,則返回-1。
void close();//關閉此流對象。釋放與之關聯的所有資源。
FileReaderAndFileWriter例子
// 複印
public static void main(String[] args) throws IOException {
FileReader fr = null;
BufferedReader br = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
// 繼承InpuStreamReader
fr = new FileReader("d:\\ab.txt");
br = new BufferedReader(fr);
// 需要加\n換行 ,printWriter不需要
fw = new FileWriter("d:\\abnew.txt");
bw = new BufferedWriter(fw);
String one_line;
while ((one_line = br.readLine()) != null) {
// 注意加\n
bw.write(one_line);
bw.newLine();
}
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (bw != null) {
bw.close();
}
if (fw != null) {
fw.close();
}
if (br != null) {
br.close();
}
if (fr != null) {
fr.close();
}
}
}