大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java中的io流知識(shí)總結(jié)

Java中的io流知識(shí)總結(jié)

更新時(shí)間:2022-09-26 10:07:19 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1303次

IO Fluid系統(tǒng)圖

IO 幾種常見(jiàn)的流:

I/O 流原理功能

Input/Output:輸入輸出機(jī)制

輸入機(jī)制:允許java程序從外部設(shè)備(磁盤(pán)、光盤(pán)、網(wǎng)絡(luò)等)獲取數(shù)據(jù)。

輸出機(jī)制:保留java程序中的數(shù)據(jù),輸出到外部設(shè)備(磁盤(pán)、CD等)。

流量分類:

以不同的方式,您可以進(jìn)行分類。

1.按功能劃分:

輸入流:只能從中讀取數(shù)據(jù),而不是向其寫(xiě)入數(shù)據(jù)。

輸出流:只能寫(xiě)入數(shù)據(jù),不能從中讀取數(shù)據(jù)。

2.按處理單元?jiǎng)澐?/strong>

字節(jié)流和字符流的操作方式基本相同。操作的數(shù)據(jù)單位不同

字節(jié)流:操作為 8 Bytes of bits InputStream/OutputStream 作為字節(jié)流的基類

字符流:操作為 16 個(gè)字符 Reader/Writer 作為字符流的基類

關(guān)于字節(jié)流和字符流的區(qū)別?

當(dāng)讀取一個(gè)字節(jié)流時(shí),讀取一個(gè)字節(jié)并返回一個(gè)字節(jié)。字符流使用字節(jié)流讀取一個(gè)或多個(gè)字節(jié)(中文對(duì)應(yīng)字節(jié)為兩個(gè),UTF-8碼表中有三個(gè))時(shí),首先查看指定的

編碼表,將找到的字符返回給。

字節(jié)流可以處理所有類型的數(shù)據(jù),例如圖片、mp3、視頻等。字符流只能處理字符數(shù)據(jù)。

字節(jié)流和輸入流均以 InputStream 結(jié)尾,字節(jié)輸出流均以 OutputStream 結(jié)尾。在 InputStream 或者 OutputStream 前面代表這個(gè)流的功能。

字符流輸入流以Reader結(jié)尾,字符輸出流以Writer結(jié)尾,同一字符流前面的字符代表流的功能。

其實(shí)字節(jié)流本身在操作的時(shí)候不會(huì)用到緩沖區(qū),直接操作的是文件本身,但是字符流在操作的時(shí)候會(huì)用到緩沖區(qū),文件是通過(guò)緩沖區(qū)來(lái)操作的。

用字節(jié)流還是字符流比較好?

答:字節(jié)流,因?yàn)橛脖P(pán)上的所有文件都是以字節(jié)的形式傳輸或保存的,包括圖片等。但是字符流只是在內(nèi)存中形成的,所以在實(shí)際開(kāi)發(fā)中,字節(jié)流的使用更為廣泛。

摘要:如果是處理純文本數(shù)據(jù),我們必須優(yōu)先考慮字符流,另外,它們都使用字節(jié)流。

按角色

節(jié)點(diǎn)流:可以直接從/讀取到外部設(shè)備/寫(xiě)入數(shù)據(jù)的流,這稱為節(jié)點(diǎn)流,節(jié)點(diǎn)流也稱為低級(jí)流。

處理流程:連接和封裝現(xiàn)有流程,擴(kuò)展原有的讀/寫(xiě)功能。處理流程也稱為高級(jí)流程。

Java 的 io 包包括 40 多個(gè)流,它們都有密切的聯(lián)系和使用規(guī)則,這些流都來(lái)自 4 個(gè)抽象基類。

InputStream/Reader:所有輸入流的基類,前者為字節(jié)輸入流,后者為字符輸入流。

OutputStream/Writer:基本上都是所有的輸出流,前者是字節(jié)輸出流,后者是字符輸出流。

... 和 、文件類

File 類起源:File Class 彌補(bǔ)了 IO 流的不足,IO 只能操作數(shù)據(jù),但不能對(duì)文件的信息進(jìn)行操作,操作文件必須使用 File 類(Java File類概述)。

功能 :

一個(gè)。您可以將文件或文件夾拆分為程序中的對(duì)象。

灣。方便操作文件或文件夾中的屬性信息。

C。File Class 通常通過(guò)構(gòu)造函數(shù)作為參數(shù)傳遞給流的對(duì)象。

File類的常用方法:

1.構(gòu)造方法:

File(String pathname):這種構(gòu)造可以將現(xiàn)有或不存在的文件或文件夾封裝成 File 的對(duì)象,pathname 文件的路徑。

File(File parent,String child):parent by child 文件的路徑。

(1)文件路徑

文件 f6 = 新文件(“c:\java”,“jre7”);

//file 的 toString 方法被覆蓋,無(wú)論打包地址打印

//'/' 和 '\' 所有目錄分隔符,在其他系統(tǒng)中,目錄分隔符可以改變,這樣寫(xiě)不利于跨平臺(tái)操作 // 最好使用 File分隔符 Segmentation 中提供的字段。

(2)創(chuàng)建文件相關(guān)功能:

createNewFile():創(chuàng)建相關(guān)文件。并返回布爾值

createTemFile(): 在默認(rèn)臨時(shí)文件目錄下創(chuàng)建一個(gè)空文件,程序運(yùn)行后不存在。

mkdirs():創(chuàng)建目錄,如果你寫(xiě)的目錄的父目錄不存在。他會(huì)幫你創(chuàng)作。

(3)刪除文件相關(guān)功能:

delete():刪除空目錄或文件(ps只能是空目錄)

deleteOnExit():虛擬機(jī)終止時(shí)刪除文件。

(4)裁判:

exists() :判斷文件或文件夾是否存在。

canExecute() :判斷文件是否可執(zhí)行,跟操作系統(tǒng)有關(guān)。

canRead() : 判斷文件是否可讀

canWrite() : 判斷文件是否可寫(xiě)

equals(Object obj) : 測(cè)試抽象路徑名是否等于給定的對(duì)象。

isAbsolute() :測(cè)試這個(gè)抽象路徑名是否是絕對(duì)路徑名。

isDirectory() :判斷文件對(duì)象代表一個(gè)文件夾。

isFile() : 判斷文件對(duì)象代表一個(gè)文件

isHidden() : 判斷文件對(duì)象是否為隱藏文件

(5)獲取文件對(duì)象屬性信息的方法:

getAbsoluteFile() :返回這個(gè)抽象路徑名的絕對(duì)路徑名形式。

getAbsolutePath() :返回這個(gè)抽象路徑名的絕對(duì)路徑名字符串。

getCanonicalFile() :返回這個(gè)抽象路徑名的規(guī)范形式。

getCanonicalPath() :返回此抽象路徑名的規(guī)范路徑名字符串。

getPath() :將此抽象路徑名轉(zhuǎn)換為路徑名字符串。

getName() :返回此抽象路徑名表示的文件或目錄的名稱。

getParent() :返回此抽象路徑名的父目錄的路徑名字符串;如果沒(méi)有為此路徑名指定父目錄,則返回null。

getParentFile() :返回此抽象路徑名的父目錄的抽象路徑名;如果沒(méi)有為此路徑名指定父目錄,則返回null。

getTotalSpace() :返回指定路徑的總空間中的字節(jié)數(shù)

getFreeSpace() :返回此抽象路徑名指定的分區(qū)中未分配的字節(jié)數(shù)。

getUsableSpace() :返回此抽象路徑名指定的分區(qū)上此虛擬機(jī)可用的字節(jié)數(shù)。

renameTo(File dest) :重命名此抽象路徑名表示的文件。剪切

(6)如何設(shè)置文件信息:

setExecutable(boolean executable) :設(shè)置文件可執(zhí)行方法

setLastModified(long time) :設(shè)置此抽象路徑名指定的文件或目錄的最后修改時(shí)間。

setReadable(boolean readable) : 設(shè)置文件是否可讀

setReadOnly() : 設(shè)置文件是否只讀

setWritable(boolean writable) : 設(shè)置文件是否可寫(xiě)

(7)如何獲取文件的一般信息:

lastModified() :獲取文件的最后修改時(shí)間

length() :返回這個(gè)抽象路徑名所代表的文件的長(zhǎng)度。

(8)如何操作文件夾

list():將文件夾中包含的目錄和文件存儲(chǔ)到字符串?dāng)?shù)組中。

listFiles():列出文件夾中包含的目錄和文件,存放在 File 數(shù)組中。

listRoots():列出可用的文件系統(tǒng)根目錄。

(9)文件過(guò)濾器: FileFilter

布爾接受(文件路徑名);該接口的一個(gè)實(shí)例可以用來(lái)傳遞給 File 類的 listFiles(FileFilter) 方法,用來(lái)返回滿足過(guò)濾器要求的子

文件 File [] listFiles(FileFilter filter)

IO Streams按功能分類

1. 節(jié)點(diǎn)流

字節(jié)數(shù)組流(內(nèi)存流)

ByteArrayInputStream

ByteArrayOutputStream

因?yàn)閮?nèi)存輸出流中有新的方法,不要使用多態(tài),不能讓父類的引用指向那樣的東西。

效果:循環(huán)中可以將所有數(shù)據(jù)存儲(chǔ)在一個(gè)統(tǒng)一的容器中,然后在循環(huán)結(jié)束時(shí),可以一起取出容器中的所有內(nèi)容。

注意事項(xiàng):

內(nèi)存流屬于內(nèi)存中的資源,所以不要過(guò)度,如果太大,會(huì)出現(xiàn)內(nèi)存溢出錯(cuò)誤。

2. 緩沖流量

緩沖字節(jié)流

BufferedInputStream

BufferedOutputStream

緩沖字符流

BufferedReader

BufferedWriter

處理流包含節(jié)點(diǎn)流,節(jié)點(diǎn)流決定與之通信的外部設(shè)備,處理流增加其功能。

緩沖流的好處:

緩沖流里面包含一個(gè)緩沖區(qū),默認(rèn)8kb,每次程序調(diào)用read方法實(shí)際上都是從緩沖區(qū)中讀取內(nèi)容,如果讀取失敗

則說(shuō)明緩沖區(qū)中沒(méi)有內(nèi)容,然后從數(shù)據(jù)源,然后將盡可能多的字節(jié)讀取并放入緩沖區(qū),

最后將緩沖區(qū)的內(nèi)容,全部返回給程序。

從緩沖區(qū)讀取數(shù)據(jù)比直接從數(shù)據(jù)源讀取數(shù)據(jù)要快,效率更高,性能更好。

簡(jiǎn)而言之:

沒(méi)有緩存,那么每讀一次,就會(huì)發(fā)送一次IO操作;有一個(gè)緩沖區(qū),第一次讀的時(shí)候,我會(huì)讀x個(gè)字節(jié)到緩存中,

然后read會(huì)從緩存中讀取,當(dāng)讀到緩沖區(qū)結(jié)束時(shí),會(huì)再讀x個(gè)字節(jié)到緩存中。

流處理數(shù)據(jù)的方法與節(jié)點(diǎn)流處理方法基本相同。

3. 轉(zhuǎn)化流量

轉(zhuǎn)換流功能:將字節(jié)流轉(zhuǎn)換為字符流,可以解決編碼集和解碼集造成的亂碼問(wèn)題。

輸入流讀取器:

輸出流編寫(xiě)器:

code : character —– 編碼字符集 ——–》 二進(jìn)制

decode : 二進(jìn)制——解碼字符集 ———》 字符

在處理文件時(shí),如果文件的字符格式與編譯器的不同,就會(huì)出現(xiàn)亂七八糟的情況。比如文件字符格式GBK,

而編譯器是UTF-8格式,那么問(wèn)題就來(lái)了。

亂碼問(wèn)題的原因:

(1)編碼和解碼字符集不一致導(dǎo)致亂碼

(2)丟失字節(jié),丟失長(zhǎng)度

大多數(shù)情況下,出現(xiàn)亂碼問(wèn)題的原因是漢字,因?yàn)闈h字在不同的字符碼中占用不同的字節(jié),但都占用多個(gè)字節(jié)。

而英文字母則沒(méi)有這個(gè)問(wèn)題,因?yàn)橛⑽淖帜冈谒凶址幋a中占據(jù)一個(gè)字節(jié)。

InputStreamReader : Transform the input stream –》 Convert byte input stream to character input stream

效果:為了防止文件使用字符輸入流處理出現(xiàn)亂碼問(wèn)題。

4.數(shù)據(jù)處理流程

DataOutputStream

DataInputStream

特性:可以保存數(shù)據(jù)本身,并且可以保存數(shù)據(jù)類型(基本數(shù)據(jù)類型+String)

5.序列化流程

將對(duì)象轉(zhuǎn)化為字節(jié)序列的過(guò)程,就是對(duì)象序列化的過(guò)程。

將字節(jié)序列恢復(fù)到對(duì)象的過(guò)程稱為對(duì)象反序列化。

效果:保持對(duì)象(引用數(shù)據(jù)類型data)類型+數(shù)據(jù)。

序列化流程: 輸出流 ObjectOutputStream writeObject()

反序列化流:輸入流 ObjectInputStream readObject()

注意事項(xiàng):

先序列化,再反序列化,并且反序列化的順序必須和序列化的順序一致。

并非所有對(duì)象都可以序列化。只有當(dāng) Serializable 接口類的對(duì)象才能被序列化。

并非對(duì)象中的所有屬性都可以序列化。

對(duì)象序列化的主要目的:

將對(duì)象轉(zhuǎn)換為字節(jié)序列,保存到硬盤(pán),持久化存儲(chǔ),通常保存為文件。

在網(wǎng)絡(luò)上傳遞的是對(duì)象的字節(jié)序列

對(duì)象序列化步驟:

創(chuàng)建對(duì)象輸出流,其他輸出節(jié)點(diǎn)流可以包含在構(gòu)造方法中,如文件輸出流。

將對(duì)象通過(guò) writeObject 來(lái)寫(xiě)入。

對(duì)象反序列化步驟:

創(chuàng)建對(duì)象輸入流,構(gòu)造方法中可以包含其他輸入節(jié)點(diǎn)流,如文件輸入流

通過(guò) readObject() 方法讀取對(duì)象。

serialVersionUID : 序列化版本 id

效果:字面意思,就是序列號(hào)。一切都實(shí)現(xiàn)了 Serializable 接口的類,會(huì)有一個(gè)默認(rèn)的靜態(tài)序列化ID。

不同版本之間的類,可以解決序列化兼容性的問(wèn)題,如果一個(gè)對(duì)象在之前的版本中保存在一個(gè)文件中,那么版本升級(jí)后,如果序列化id一致,我們可以認(rèn)為文件中的對(duì)象還是對(duì)象這種。

如果類不希望不同版本之間兼容,但是我們也希望類的對(duì)象是有序的,那么在不同的版本id中使用不同的序列化。

瞬態(tài):當(dāng)類中有不想被序列化的屬性時(shí),所以使用這個(gè)修飾符來(lái)修改。

以上就是關(guān)于“Java中的io流知識(shí)總結(jié)”介紹,對(duì)于初學(xué)者來(lái)說(shuō),可以看看本站的Java IO流的分類,對(duì)IO流有一個(gè)初步的認(rèn)識(shí),這樣在以后的學(xué)習(xí)中會(huì)更加順暢。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久精品中文字幕一区 | 日本毛片免费看 | 成人aa在线观看视频 | 射狠狠| 一级特级欧美aa毛片免费 | 快播视频在线 | 美日韩中文字幕 | 亚洲精品乱码国产精品乱码 | 国产啪视频1000部免费视频 | 亚洲免费在线观看视频 | 99国产精品热久久久久久夜夜嗨 | 一级黄色录像免费观看 | 欧美色精品 | 日韩欧美一区二区三区 | 日本a在线观看 | 天天干天天色综合网 | 日韩专区亚洲精品欧美专区 | 九九视频网 | 黄频网站在线观看视频 | 亚洲va在线va天堂va四虎 | 日韩一二区 | 欧美色欧美亚洲高清在线视频 | 日韩美在线 | 久久综合九色综合国产 | 久久精品视频7 | 国产精品美女久久久久网 | 国产精品亚洲专区在线观看 | 欧美日韩一区二区在线观看视频 | 日本精品久久久一区二区三区 | 国产免费一级高清淫曰本片 | 国产精品婷婷久青青原 | 日本免费不卡视频 | 国产精品亚洲高清一区二区 | 日本爱情动作片网址 | 欧美国产综合日韩一区二区 | 麻豆国产精品高中生视频 | 四虎欧美在线观看免费 | 日本成人不卡 | 日韩免费精品一级毛片 | 亚洲图片综合网 | a级亚洲片精品久久久久久久 |