首頁 >Java >java教程 >JAVA中IO運算的位元組流和字元流實例分析

JAVA中IO運算的位元組流和字元流實例分析

王林
王林轉載
2023-04-22 17:58:08807瀏覽

JAVA中IO運算的位元組流和字元流實例分析

IO操作

JAVA中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();
        }
        }

字元流

FileWriter

寫入檔案實例

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();
    }}

JAVA中IO運算的位元組流和字元流實例分析
JAVA中IO運算的位元組流和字元流實例分析

#FileReader

##讀取文件實例

這裡我把內容換行了

JAVA中IO運算的位元組流和字元流實例分析 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();
    }}

JAVA中IO運算的位元組流和字元流實例分析

位元組流與字元流得區別

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

位元組流在操作的時候本身是不會用到緩衝區(記憶體)的,是與檔案本身直接操作的,而字元流在操作的時候是使用到緩衝區的

位元組流在操作文件時,即使不關閉資源(close方法),文件也能輸出,但是如果字元流不使用close方法的話,則不會輸出任何內容,說明字元流用的是緩衝區,並且可以使用flush方法強制進行刷新緩衝區,這時才能在不close的情況下輸出內容

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

在所有的硬碟上保存檔案或進行傳輸的時候都是以位元組的方法進行的,包括圖片也是按字節完成,而字元是只有在記憶體中才會形成的,所以使用位元組的操作是最多的。

如果要java程式實作一個拷貝功能,應該選用位元組流進行操作(可能拷貝的是圖片),並且採用邊讀邊寫的方式(節省記憶體)。

以上是JAVA中IO運算的位元組流和字元流實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除