java 核心編程——IO流之字符流和字節流相互轉換(四)
阿新 • • 發佈:2017-09-13
red amr nbsp main 字符輸入 txt not stat args
1.為什麽字符流和字節流需要轉換?
這是因為有一些時候系統給你提供的只有字節流,比如說System.in標準輸入流。就是字節流。你想從他那裏得到用戶在鍵盤上的輸入,只能是以轉換流將它轉換為Reader以方便自己的程序讀取輸入。再比如說Socket裏的getInputStream()很明顯只給你提供字節流,你要不行直接用,就得給他套個InputStreamReader()用來讀取。網絡傳輸來的字符。
2.字節流和字符流怎麽轉換?
2.1.字節流轉換為字符流:InputStreamReader
2.2.字符輸流轉換為字節流:InputStreamWriter
3.具體應用
3.1 字節流轉換為字符流
package se.io; import java.io.*; public class InputStreamReaderTest { public static void main(String[] args) { try { //構建字節輸入流對象 FileInputStream fileInputStream = new FileInputStream("E:\\test\\data3.txt"); //構建字節字符轉換流對象 InputStreamReader inputStreamReader = newInputStreamReader(fileInputStream); //構建字符輸入流對象 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //讀取數據 char[] chars = new char[1024]; int off = 0; while(bufferedReader.ready()){ off = bufferedReader.read(chars); }//打印輸出 String s = new String(chars,0,off); System.out.println(s); //關閉流 bufferedReader.close(); inputStreamReader.close(); fileInputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
3.2字符流轉換為字節流
package se.io; import java.io.*; public class OutPutStreamWriterTest { public static void main(String[] args) { try { //構建輸出流字節對象 FileOutputStream fileOutputStream = new FileOutputStream("E:\\test\\data4.txt"); //構建輸出流字節字符轉換對象 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); //構建字符輸出流對象 BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); //構建數據 char[] chars = new char[3]; chars[0] = ‘a‘; chars[1] = ‘b‘; chars[2] = ‘中‘; //輸出數據 bufferedWriter.write(chars); //關閉流 bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
java 核心編程——IO流之字符流和字節流相互轉換(四)