成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java學習(九) —— java中的File文件操作及IO流概述

ralap / 2275人閱讀

摘要:字節(jié)流可以處理所有以為單位存儲的文件,也就是說可以處理所有的文件,但是在處理字符的速度上不如字符流。文件字節(jié)輸入流的讀取時,是直接同字節(jié)流中讀取的。原理就是在字節(jié)流的基礎上增加了編解碼的操作。

前言

流是干什么的:為了永久性的保存數(shù)據(jù)。

IO流用來處理設備之間的數(shù)據(jù)傳輸(上傳和下載文件)

java對數(shù)據(jù)的操作是通過流的方式。

java用于操作流的對象都在IO包中。

java IO系統(tǒng)的學習,本質上就是對文件的讀寫操作。

File類

java中使用File來抽象一個文件,無論是普通文件還是目錄,都可應對與一個File對象。

File只是抽象的代表來磁盤上的某個文件或者目錄,內部實際上是依賴一個平臺無關的本地文件系統(tǒng)類。

File無法對其所表示的文件內容進行任何讀寫操作(那是流做的事情)。

成員方法:

(1)創(chuàng)建功能:
    【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()

流的分類

根據(jù)數(shù)據(jù)流向的不同分為輸入流和輸出流。

根據(jù)處理數(shù)據(jù)類型的不同分為字節(jié)流和字符流:

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

字符流的抽象基類:

(1)Reader:字符輸入流的抽象類,所有字符輸入流的實現(xiàn)都是它的子類
(2)Writer:字符輸出流的抽象類,所有字符輸出類的實現(xiàn)都是它的子類

字節(jié)流的抽象基類:

(1)InputStream:字節(jié)輸入流的抽象類,是所有字節(jié)輸入流的父類
(2)OutputStream:字節(jié)輸出流的抽象類,是輸出字節(jié)流的所有類的超類

字符流Reader派生的子類:

(1)CharArrayReader
(2)BufferedReader/LineNumberReader
(3)FilterReader
(4)InputStreamReader/FileReader

字符流Writer派生的子類:

(1)BufferedWriter
(2)CharArrayWriter
(3)FilterWriter
(4)OutputStreamWriter/FileWriter
(5)PrintWriter
(6)StringWriter

字節(jié)流InputStream派生的子類

(1)FileInputStream
(2)ObjectInputStream
(3)FilterInputStream/BufferedInputStream/DataInputStream/PushbackInputStream
(4)SequenceInputStream
(5)ByteArrayInputStream
(6)StringBufferInputStream)

字節(jié)流OutputStream派生的類:

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

優(yōu)化讀寫:字節(jié)緩沖流

字節(jié)流一次讀寫一個數(shù)組的速度明顯比一次讀寫一個字節(jié)的速度快很多。這是加入了數(shù)組這樣的緩沖區(qū)效果。

文件字節(jié)輸入流的讀取時,是直接同字節(jié)流中讀取的。

由于字節(jié)流是與硬件(存儲介質)進行的讀取,所以速度較慢。

而cpu需要使用數(shù)據(jù)時通過read()、read(byte[])讀取數(shù)據(jù)時就要受到硬件IO的慢速度限制。

cpu與內存發(fā)生的讀寫速度比硬件IO快10倍不止,那么就可以在內存建立緩沖區(qū)優(yōu)化。

優(yōu)化讀寫的思路:

(1)在內存中建立緩沖區(qū)
(2)先把存儲介質中的字節(jié)讀取到緩沖區(qū)
(3)cpu需要數(shù)據(jù)時直接從緩沖區(qū)讀取
(4)緩沖區(qū)要足夠大,在被讀完后又觸發(fā)fill()函數(shù)自動從存儲介質的文件字節(jié)內容中讀取字節(jié)存儲到緩沖區(qū)數(shù)組。

轉換流

轉換流是字節(jié)流通向字符流的橋梁,可以將字節(jié)流轉換為字符流。

原理就是在字節(jié)流的基礎上增加了編解碼的操作。

字符流 = 字節(jié)流 + 編碼表

FileReader、FileWriter其實底層都是字節(jié)流,只不過額外的配置一個編碼器、解碼器,底層用字節(jié)讀數(shù)據(jù)通過解碼器轉換成字符,或通過編碼器將字符轉換為字節(jié)再輸出。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/77111.html

相關文章

  • 快速Get-JAVA-IO

    摘要:除非文件用自帶的記事本打開我們能夠讀懂,才采用字符流,否則建議使用字節(jié)流。 第四階段 IO IO流 前言: 前面的學習我們只能夠在已有的一定封閉范圍內進行一些操作,但是這顯然是無趣的,也是不支持我們實現(xiàn)一些復雜的需求,所以Java提供IO流這樣一種概念,方便我們對數(shù)據(jù)進行操作 而使用IO流我們可以實現(xiàn)一些強大的功能,例如針對文件的移動復制等操作,又或者程序與外部文件之間的數(shù)據(jù)存儲或者讀...

    wangzy2019 評論0 收藏0
  • 我的阿里之路+Java面經考點

    摘要:我的是忙碌的一年,從年初備戰(zhàn)實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰(zhàn)實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...

    姘擱『 評論0 收藏0
  • 1、轉換 2、緩沖

    摘要:字符轉換流原理字節(jié)流編碼表。和作為子類,僅作為操作字符文件的便捷類存在。源目的先根據(jù)需求明確要讀,還是要寫。屏幕網絡完全可以明確具體要使用哪個流對象。明確四是否需要額外功能呢額外功能轉換嗎轉換流。高效嗎緩沖區(qū)對象。 01轉換流概述 * A: 轉換流概述 * a: 轉換流概述 * OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的字符編碼...

    sf190404 評論0 收藏0
  • Java IO學習筆記二

    摘要:學習筆記二流的概念在程序中所有的數(shù)據(jù)都是以流的方式進行傳輸或保存的,程序需要數(shù)據(jù)的時候要使用輸入流讀取數(shù)據(jù),而當程序需要將一些數(shù)據(jù)保存起來的時候,就要使用輸出流完成。主要功能是向文件中寫入內容構造函數(shù)根據(jù)給定的對象構造一個對象。 Java IO學習筆記二 流的概念 在程序中所有的數(shù)據(jù)都是以流的方式進行傳輸或保存的,程序需要數(shù)據(jù)的時候要使用輸入流讀取數(shù)據(jù),而當程序需要將一些數(shù)據(jù)保存起來...

    ideaa 評論0 收藏0
  • Java開發(fā)中對象的序列化與反序列化

    摘要:在中,對象的序列化與反序列化被廣泛應用到遠程方法調用及網絡傳輸中。相關接口及類為了方便開發(fā)人員將對象進行序列化及反序列化提供了一套方便的來支持。未實現(xiàn)此接口的類將無法使其任何狀態(tài)序列化或反序列化。 序列化與反序列化 序列化 (Serialization)是將對象的狀態(tài)信息轉換為可以存儲或傳輸?shù)男问降倪^程。一般將一個對象存儲至一個儲存媒介,例如檔案或是記億體緩沖等。在網絡傳輸過程中,可以...

    fox_soyoung 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<