Java 中的字元流與位元組流


位元組流

Java 位元組流用於執行 8 位位元組的輸入和輸出操作。雖然有很多與位元組流相關的類,但最常用的類是 **FileInputStream** 和 **FileOutputStream**。以下是一個使用這兩個類將輸入檔案複製到輸出檔案的示例:

示例

import java.io.*;
public class CopyFile {

   public static void main(String args[]) throws IOException {        
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");
         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

現在讓我們建立一個名為 **input.txt** 的檔案,其內容如下:

This is a test for copy file.

接下來,編譯上述程式並執行它,這將導致建立一個 output.txt 檔案,其內容與 input.txt 中的內容相同。所以讓我們將上述程式碼放在 CopyFile.java 檔案中並執行以下操作:

$javac CopyFile.java
$java CopyFile

字元流

Java **位元組** 流用於執行 8 位位元組的輸入和輸出操作,而 Java **字元** 流用於執行 16 位 Unicode 的輸入和輸出操作。雖然有很多與字元流相關的類,但最常用的類是 **FileReader** 和 **FileWriter**。雖然在內部 FileReader 使用 FileInputStream,FileWriter 使用 FileOutputStream,但這裡的主要區別在於 FileReader 一次讀取兩個位元組,FileWriter 一次寫入兩個位元組。

我們可以重寫上面的示例,它使用這兩個類將一個輸入檔案(包含 Unicode 字元)複製到一個輸出檔案:

示例

import java.io.*;
public class CopyFile {

   public static void main(String args[]) throws IOException {
      FileReader in = null;
      FileWriter out = null;

      try {
         in = new FileReader("input.txt");
         out = new FileWriter("output.txt");
         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

現在讓我們建立一個名為 **input.txt** 的檔案,其內容如下:

This is test for copy file.

接下來,編譯上述程式並執行它,這將導致建立一個 output.txt 檔案,其內容與 input.txt 中的內容相同。所以讓我們將上述程式碼放在 CopyFile.java 檔案中並執行以下操作:

$javac CopyFile.java
$java CopyFile

更新於: 2020-06-18

9K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告