目錄
前言
File類別
流的分類
最佳化讀寫:位元組緩衝流
轉換流
首頁 Java java教程 java中的File檔案操作及IO流內容的詳細介紹

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

Oct 12, 2018 pm 03:55 PM
java

這篇文章帶給大家的內容是關於 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

在本文中,我們保留了最常被問到的 Java Spring 面試問題及其詳細答案。這樣你就可以順利通過面試。

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能 PHP與Python:核心功能 Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

See all articles