首頁 > 軟體

Java 超詳細講解IO操作位元組流與字元流

2022-03-25 19:00:39

IO操作

位元組流

  • java.io.InputStream 輸入流,主要是用來讀取檔案內容的。
  • java.io.OutputStream 輸出流,主要是用來將內容位元組寫入檔案的。

FileInputStream

該流用於從檔案讀取資料,它的物件可以用關鍵字 new 來建立。

有多種構造方法可用來建立物件。

可以使用字串型別的檔名來建立一個輸入流物件來讀取檔案

InputStream f = new FileInputStream("D:/hello");

也可以使用一個檔案物件來建立一個輸入流物件來讀取檔案。我們首先得使用 File() 方法來建立一個檔案物件:

File f = new File("D:/hello");
InputStream in = new FileInputStream(f);

FileOutputStream

該類用來建立一個檔案並向檔案中寫資料。

如果該流在開啟檔案進行輸出前,目標檔案不存在,那麼該流會建立該檔案。

有兩個構造方法可以用來建立 FileOutputStream 物件。

使用字串型別的檔名來建立一個輸出流物件:

OutputStream f = new FileOutputStream("D:/hello");

也可以使用一個檔案物件來建立一個輸出流來寫檔案。我們首先得使用File()方法來建立一個檔案物件:

File f = new File("D:/hello");
OutputStream fOut = new FileOutputStream(f);

位元組流讀寫案例

讀取D:/hello.txt檔案中的內容再輸入到檔案D:/test.txt中

      public class Mk {
        public static void main(String[] args) throws IOException {
            File file=new File("D://hello.txt");
            File file1= new File("D://test.txt");
            InputStream is=new FileInputStream(file);
            OutputStream out=new FileOutputStream(file1);
            //定義byte陣列用來暫存資料
            byte[] buf = new byte[1024];
            //讀取Is中的內容存到buf
            is.read(buf);
            //將buf中的內容寫入out
            out.write(buf);
            is.close();
            out.close();
        }
        }

字元流

FileReader

寫入檔案範例

public class A {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("user.txt", true);
        fw.write("你好中國1");
        fw.write("你好中國2");
        fw.write("你好中國3");
        fw.close();
    }
}

FileWriter

讀取檔案範例

這裡我把內容換行了

br.ready()是判斷這一行流是否為空

br.readLine()是輸出一行,然後自動遊標指到下一行。

public class A {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("user.txt"));
        while (br.ready()) {
            System.out.println(br.readLine());
        }
        br.close();
    }
}

位元組流與字元流的區別

位元組流和字元流使用是非常相似的,那麼除了操作程式碼的不同之外,還有哪些不同呢?

位元組流在操作的時候本身是不會用到緩衝區(記憶體)的,是與檔案本身直接操作的,而字元流在操作的時候是使用到緩衝區的 位元組流在操作檔案時,即使不關閉資源(close方法),檔案也能輸出,但是如果字元流不使用close方法的話,則不會輸出任何內容,說明字元流用的是緩衝區,並且可以使用flush方法強制進行重新整理緩衝區,這時才能在不close的情況下輸出內容

那開發中究竟用位元組流好還是用字元流好呢?

在所有的硬碟上儲存檔案或進行傳輸的時候都是以位元組的方法進行的,包括圖片也是按位元組完成,而字元是隻有在記憶體中才會形成的,所以使用位元組的操作是最多的。 如果要java程式實現一個拷貝功能,應該選用位元組流進行操作(可能拷貝的是圖片),並且採用邊讀邊寫的方式(節省記憶體)。

到此這篇關於Java 超詳細講解IO操作位元組流與字元流的文章就介紹到這了,更多相關Java IO操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com