Java FileInputStream使用指南

Java中提供了一個FileInputStream類來處理文件輸入流。 使用它可以輕鬆讀取文件中的內容。 FileInputStream繼承了InputStream類,用於打開一個文件,以便從中讀取數據。在本文中,我們將詳細介紹如何使用FileInputStream類。

一、文件的讀取方式

以FileInputStream為例,讀取文件的方式主要有兩種:位元組流和字符流。 FileInputSteam繼承自InputStream,在InputStream中已實現了字符流和位元組流的轉換。 因此,FileInputStream可以讀取以任意編碼格式存儲的數據。

下面通過代碼演示FileInputStream讀取文件的兩種方式:

    
        //位元組流
        FileInputStream fis = new FileInputStream("filePath");
        int byteRead;
        while ((byteRead = fis.read()) != -1) {
            System.out.print((char)byteRead);
        }
        fis.close();

        //字符流
        Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream("filePath")));
        int charRead;
        while ((charRead = reader.read()) != -1) {
            System.out.print((char)charRead);
        }
        reader.close();
    

上述代碼中,FileInputStream讀取文件的方式在循環中不斷讀取每一個位元組或字符並輸出。 需要注意的是,這裡將讀取到的位元組強制轉換為char類型,以便輸出。

二、文件的打開方式

在打開文件的時候,FileInputStream提供了許多不同的選項,以方便程序員自由控制其行為。 接下來,我們將介紹一些FileInputStream打開文件的常用選項:

1.文件路徑

我們可以使用相對或者絕對路徑來打開一個文件。如果使用相對路徑,程序將使用當前工作目錄來解析文件路徑。 在下面的例子中以相對路徑打開文件。

    
        FileInputStream fis = new FileInputStream("file.txt");
    

當然,我們也可以使用絕對路徑來打開一個文件,如下所示:

    
        FileInputStream fis = new FileInputStream("C:\\Users\\lzq\\Desktop\\file.txt");
    

2.文件打開方式

在FileInputStream中,我們可以設置這樣一個屬性,就是當打開一個文件時,該文件不存在時是否創建新文件。 如果我們希望在文件不存在時自動創建文件,則可以將第二個參數設置為true。 下面的代碼演示的是如何以只讀方式打開文件,如果文件不存在,不會自動創建文件。

    
        FileInputStream fis = new FileInputStream("file.txt");
    

在下面的代碼中,我們以創建新文件的方式打開了文件。如果該文件不存在,則自動創建它。

    
        FileInputStream fis = new FileInputStream("file.txt",true);
    

三、文件的讀取操作

在打開一個文件之後,我們就可以執行文件的讀取操作了。在FileInputStream中,我們提供了多種讀取一個文件中數據的方式,包括read()、read(byte[] b)、read(byte[] b, int off, int len)等等,這裡我們主要介紹read()方法的使用。

read() 方法的作用是從文件中讀取一個位元組。 如果該位元組大於等於0,則返回該位元組。如果該位元組小於0,則文件末尾已經被讀取,返回-1。

    
        FileInputStream fis = new FileInputStream("filePath");
        int byteRead;
        while ((byteRead = fis.read()) != -1) {
            System.out.print((char)byteRead);
        }
        fis.close();
    

在這段代碼中,我們使用一個while循環來循環讀取文件中的每一個位元組,當讀取到文件末尾時返回-1,停止循環。需要注意的是,我們需要將讀取到的位元組強制轉換為char類型以便輸出。

除了read()方法,我們還可以使用read(byte[] b)、read(byte[] b, int off, int len)等方法進行文件讀取操作。但與read()方法不同的是,這些方法可以同時讀取多個位元組,因此能夠提高文件讀取效率。

四、總結

Java中提供了FileInputStream類用於處理文件輸入流,同時也提供了多種操作方式。 當我們需要操作文件時,FileInputStream提供了豐富的選項,以方便程序員自由控制其行為。 本文介紹了如何使用FileInputStream以及各種選項的使用方式。

最後提醒大家,使用完FileInputStream後,一定要記得關閉文件。否則將會導致資源浪費和文件佔用情況。

    
        FileInputStream fis = new FileInputStream("filePath");
        //文件讀取操作
        fis.close();
    

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293222.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:13
下一篇 2024-12-26 13:13

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • wzftp的介紹與使用指南

    如果你需要進行FTP相關的文件傳輸操作,那麼wzftp是一個非常優秀的選擇。本文將從詳細介紹wzftp的特點和功能入手,幫助你更好地使用wzftp進行文件傳輸。 一、簡介 wzft…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論