首頁  >  文章  >  Java  >  java中的File檔案操作及IO流內容的詳細介紹

java中的File檔案操作及IO流內容的詳細介紹

不言
不言轉載
2018-10-12 15:55:452776瀏覽

這篇文章帶給大家的內容是關於 java中的File文件操作及IO流內容的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

前言

  1. 流是做什麼的:為了永久性的保存資料。

  2. IO流用來處理裝置之間的資料傳輸(上傳和下載檔案)

  3. #java對資料的操作是透過流的方式。

  4. java用於操作流的物件都在IO套件中。

  5. java IO系統的學習,本質上就是對檔案的讀寫操作。

File類別

  1. java中使用File來抽象化一個文件,無論是普通文件或目錄,都可以應付與一個File物件。

  2. File只是抽象的代表來磁碟上的某個檔案或目錄,內部實際上是依賴一個平台無關的本機檔案系統類別。

  3. File無法對其所表示的檔案內容進行任何讀取和寫入操作(那是流做的事情)。

  4. 成員方法:

    (1)创建功能:
        【1】public boolean createNewFile()
        【2】public boolean mkdir()
        【3】public boolean mkdirs()
    (2)删除功能:public boolean delete()
    (3)重命名功能:public boolean renameTo(File dest)
    (4)判断功能:
        【1】public boolean isDirectory()
        【2】public boolean isFile()
        【3】public boolean exists()
        【4】public boolean canRead()
        【5】public boolean canWrite()
        【6】public boolean isHidden()
    (5)获取功能:
        【1】public String getAbsolutePath()
        【2】public String getPath()
        【3】public String getName()
        【4】public long length()
        【5】public long lastModified()
    (6)高级获取功能:
        【1】public String[] list()
        【2】public File[] listFiles()

流的分類

  1. 根據資料流向的不同分為輸入流和輸出流。

  2. 根據處理資料類型的不同分為位元組流和字元流:

(1)字元流:顧名思義,該流只能處理字符,但處理字符速度很快。
(2)位元組流:可以處理所有以bit為單位儲存的文件,也就是說可以處理所有的文件,但是在處理字元的速度上不如字元流。

  1. 字元流的抽象基底類別:

#(1)Reader:字元輸入流的抽象類,所有字元輸入流的實作都是它的子類別
(2)Writer:字元輸出流的抽象類,所有字元輸出類別的實作都是它的子類別

  1. 位元組流的抽象基底類別:

(1)InputStream:位元組輸入流的抽象類,是所有位元組輸入流的父類
(2)OutputStream:位元組輸出流的抽象類,是輸出位元組流的所有類別的超類

  1. #字元流Reader派生的子類:

    (1)CharArrayReader
    (2)BufferedReader/LineNumberReader
    (3)FilterReader
    (4)InputStreamReader/FileReader
  2. 字元流Writer派生的子類別:

    (1)BufferedWriter
    (2)CharArrayWriter
    (3)FilterWriter
    (4)OutputStreamWriter/FileWriter
    (5)PrintWriter
    (6)StringWriter
  3. 位元組流InputStream派生的子類別

    (1)FileInputStream
    (2)ObjectInputStream
    (3)FilterInputStream/BufferedInputStream/DataInputStream/PushbackInputStream
    (4)SequenceInputStream
    (5)ByteArrayInputStream
    (6)StringBufferInputStream)
  4. 位元組流OutputStream衍生的類別:

    (1)ByteArrayOutputStream
    (2)FileOutputStream
    (3)FilterOutputStream/BufferedOutputStream/DataOutputStream
    (4)ObjectOutputStream

最佳化讀寫:位元組緩衝流

  1. 位元組流一次讀寫一個陣列的速度明顯比一次讀寫一個位元組的速度快很多。這是加入了數組這樣的緩衝區效果。

  2. 檔案位元組輸入流的讀取時,是直接在同位元組流中讀取的。

  3. 由於位元組流是與硬體(儲存媒體)進行的讀取,所以速度較慢。

  4. 而cpu需要使用資料時透過read()、read(byte[])讀取資料時就要受到硬體IO的慢速度限制。

  5. cpu與記憶體發生的讀寫速度比硬體IO快10倍不止,那麼就可以在記憶體建立緩衝區優化。

  6. 優化讀寫的想法:

(1)在記憶體中建立緩衝區
(2)先把儲存媒體中的位元組讀取到緩衝區
(3)cpu需要資料時直接從緩衝區讀取
(4)緩衝區要夠大,在被讀完後又觸發fill()函數自動從存儲媒體的檔案位元組內容中讀取位元組儲存到緩衝區數組。

轉換流

  1. 轉換流是位元組流通到字元流的橋樑,可以將位元組流轉換為字元流。

  2. 原理就是在位元組流的基礎上增加了編解碼的運算。

  3. 字元流= 位元組流編碼表

  4. #FileReader、FileWriter其實底層都是位元組流,只不過額外的設定一個編碼器、解碼器,底層用位元組讀取資料透過解碼器轉換成字符,或透過編碼器將字符轉換為位元組再輸出。

#

以上是java中的File檔案操作及IO流內容的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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