1. 程式人生 > >java 核心編程——IO流之字符流和字節流相互轉換(四)

java 核心編程——IO流之字符流和字節流相互轉換(四)

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 = new
InputStreamReader(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流之字符流和字節流相互轉換(四)