java流:轉換流,裝置之間資料的傳輸,更換輸入源、輸出源
阿新 • • 發佈:2018-11-27
轉換流InputStreamReader、OutputStreamWriter
package com.qianfeng.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /* * 轉換流:本身是字元流 * 分類: * InputStreamReader:從位元組輸入流到字元讀入流 * OutputStreamWriter:從位元組輸出流到字元寫出流 * * 場景:要使用字元緩衝流的readLine(),newLine()方法服務於位元組流。 * * 例項:使用字元緩衝流的readLine(),newLine()等方法實現在控制檯一次讀一行資料。 * */ public class Demo2 { public static void main(String[] args) throws IOException { //將標準輸入流轉成字元緩衝讀入流 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); //將標準輸出流轉成字元緩衝輸出流 BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); //讀寫 String data=null; while((data=bufferedReader.readLine())!=null){ bufferedWriter.write(data); bufferedWriter.newLine(); //手動重新整理 bufferedWriter.flush(); //當輸入over的時候結束 if(data.equals("over")){ break; } } //關閉流 bufferedReader.close(); bufferedWriter.close(); } }
裝置之間資料的傳輸
package com.qianfeng.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Demo3 { public static void main(String[] args) throws IOException { /* * 裝置之間資料的傳輸: * 裝置分成輸入源和輸出源 * 輸入源:給記憶體提供資料的裝置 * 輸出源:從記憶體接收資料的裝置 * * 輸入源:鍵盤 * 輸出源:控制檯 * * 輸入源:鍵盤 * 輸出源:檔案 * * 輸入源:檔案 * 輸出源:控制檯 * * 輸入源:檔案 * 輸出源:檔案 * */ //建立 //將鍵盤作為輸入源 BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(System.in)); //將檔案作為輸入源 BufferedReader bufferedReader2 = new BufferedReader(new FileReader("src/com/qianfeng/test/Demo1.java")); //將檔案作為輸出源 BufferedWriter bufferedWriter1 = new BufferedWriter(new FileWriter("temp.txt")); //將控制檯作為輸出源 BufferedWriter bufferedWriter2 = new BufferedWriter(new OutputStreamWriter(System.out)); //讀寫 // * 輸入源:鍵盤 // * 輸出源:控制檯 String data = null; // while((data =bufferedReader1.readLine())!=null){ // bufferedWriter2.write(data); // bufferedWriter2.newLine(); // bufferedWriter2.flush(); // } // * 輸入源:鍵盤 // * 輸出源:檔案 // while((data =bufferedReader1.readLine())!=null){ // bufferedWriter1.write(data); // bufferedWriter1.newLine(); // bufferedWriter1.flush(); // } // * 輸入源:檔案 // * 輸出源:控制檯 // while((data =bufferedReader2.readLine())!=null){ // bufferedWriter2.write(data); // bufferedWriter2.newLine(); // bufferedWriter2.flush(); // } // * 輸入源:檔案 // * 輸出源:檔案 while((data =bufferedReader2.readLine())!=null){ bufferedWriter1.write(data); bufferedWriter1.newLine(); bufferedWriter1.flush(); } //資源關閉 bufferedReader1.close(); bufferedReader2.close(); bufferedWriter1.close(); bufferedWriter2.close(); } }
更換輸入源、輸出源
package com.qianfeng.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintStream; public class Demo4 { public static void main(String[] args) throws IOException { /* * 更換輸入源、輸出源 * 注意:這裡是臨時更換,只能在當前程式中使用更換後的輸入輸出源,如果在其它的程式中會自動變回原來的鍵盤/控制檯。 * * 例項:從鍵盤到控制檯 更換成 從檔案到檔案 */ //更換輸入源--從鍵盤到檔案 System.setIn(new FileInputStream("src/com/qianfeng/test/Demo1.java")); //更換輸出源--從控制檯到檔案 System.setOut(new PrintStream("temp2.txt")); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); String data = null; while((data=bufferedReader.readLine())!=null){ bufferedWriter.write(data); bufferedWriter.newLine(); bufferedWriter.flush(); } bufferedReader.close(); bufferedWriter.close(); } }