成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

ralap / 2338人閱讀

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

前言

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

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

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

java用于操作流的對(duì)象都在IO包中。

java IO系統(tǒng)的學(xué)習(xí),本質(zhì)上就是對(duì)文件的讀寫操作。

File類

java中使用File來(lái)抽象一個(gè)文件,無(wú)論是普通文件還是目錄,都可應(yīng)對(duì)與一個(gè)File對(duì)象。

File只是抽象的代表來(lái)磁盤上的某個(gè)文件或者目錄,內(nèi)部實(shí)際上是依賴一個(gè)平臺(tái)無(wú)關(guān)的本地文件系統(tǒng)類。

File無(wú)法對(duì)其所表示的文件內(nèi)容進(jìn)行任何讀寫操作(那是流做的事情)。

成員方法:

(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)高級(jí)獲取功能:
    【1】public String[] list()
    【2】public File[] listFiles()

流的分類

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

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

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

字符流的抽象基類:

(1)Reader:字符輸入流的抽象類,所有字符輸入流的實(shí)現(xiàn)都是它的子類
(2)Writer:字符輸出流的抽象類,所有字符輸出類的實(shí)現(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é)流一次讀寫一個(gè)數(shù)組的速度明顯比一次讀寫一個(gè)字節(jié)的速度快很多。這是加入了數(shù)組這樣的緩沖區(qū)效果。

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

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

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

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

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

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

轉(zhuǎn)換流

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/77111.html

相關(guān)文章

  • 快速Get-JAVA-IO

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

    wangzy2019 評(píng)論0 收藏0
  • 我的阿里之路+Java面經(jīng)考點(diǎn)

    摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄?,我的目?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來(lái)的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...

    姘擱『 評(píng)論0 收藏0
  • 1、轉(zhuǎn)換 2、緩沖

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

    sf190404 評(píng)論0 收藏0
  • Java IO學(xué)習(xí)筆記二

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

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

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

    fox_soyoung 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<