溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java IO流文件管理分析

發(fā)布時(shí)間:2021-11-24 15:14:20 來源:億速云 閱讀:141 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Java IO流文件管理分析”,在日常操作中,相信很多人在Java IO流文件管理分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java IO流文件管理分析”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

一、IO流分類

1、分類角度

流的方向

  • 輸入流:從數(shù)據(jù)源中讀取數(shù)據(jù)到應(yīng)用中的流;

  • 輸出流:從應(yīng)用中將數(shù)據(jù)寫入到目的地的流;

流數(shù)據(jù)類型

  • 字節(jié)流:以字節(jié)形式來讀寫的流,標(biāo)識是名稱以Stream結(jié)尾;

  • 字符流:以字符形式來讀寫的流,標(biāo)識是名稱以Writer、Reader結(jié)尾;

  • 管道流:以數(shù)據(jù)塊為單位來處理,緩沖區(qū)就是用于讀寫的數(shù)據(jù)塊;

流的角色

  • 節(jié)點(diǎn)流:可以從一個(gè)節(jié)點(diǎn)或者向一個(gè)節(jié)點(diǎn)讀/寫數(shù)據(jù)的流,也被稱為低級流;

  • 處理流:對存在的流進(jìn)行連接或者封裝、封裝后的流來進(jìn)行讀/寫、也被稱為高級流。

2、API體系

Java IO流文件管理分析

5個(gè)核心類ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;

1關(guān)鍵接口:Serializable;

二、API細(xì)節(jié)分類

1、字節(jié)輸入流

Java IO流文件管理分析

InputStream:字節(jié)輸入流是所有字節(jié)輸入流的父類、為所有字節(jié)輸入流提供一個(gè)標(biāo)準(zhǔn)、和基本的與讀取字節(jié)有關(guān)的方法及簡單的實(shí)現(xiàn)。

FileInputStream:文件字節(jié)輸入流以字節(jié)的形式將文件中數(shù)據(jù)讀取到應(yīng)用中;

BufferedInputStream:緩沖字節(jié)輸入流,提供緩沖功能,提高效率;

ByteArrayInputStream:字節(jié)數(shù)組輸入流用于讀取其內(nèi)置緩存字節(jié)數(shù)組中的字節(jié);

PipedInputStream:管道字節(jié)輸入流必須與PipedOutputStream結(jié)合使用,用于線程之間的通信;

FilterInputStream:過濾器字節(jié)輸入流,重寫InputStream方法,為字節(jié)輸入處理流提供擴(kuò)展;

DataInputStream:數(shù)據(jù)字節(jié)輸入流,一般與DataOutputStream結(jié)合使用;

ObjectInputStream:對象字節(jié)輸入流,與ObjectOutputStream結(jié)合使用;

2、字節(jié)輸出流

Java IO流文件管理分析

OutputStream:字節(jié)輸出流,InputStream作用一樣,為所有字節(jié)輸出流提供一個(gè)標(biāo)準(zhǔn)、定義了一些基本輸出字節(jié)的方法與簡單實(shí)現(xiàn);

FileOutputStream:文件字節(jié)輸出流,將字節(jié)寫入指定目標(biāo)的文件源中;

BufferedOutputStream:緩沖字節(jié)輸出流,提供緩沖功能、提高效率;

ByteArrayOutputStream:字節(jié)數(shù)組輸出流,將字節(jié)寫入到其本身所帶的一個(gè)內(nèi)置緩存字節(jié)數(shù)組中;

PipedoutputStream:管道字節(jié)輸出流,必須與PipedInputStream結(jié)合使用、用于線程之間的通信;

FilterOutputStream:過濾字節(jié)輸出流,為字節(jié)輸出處理流提供擴(kuò)展;

DataOutputStream: 數(shù)據(jù)字節(jié)輸出流,一般與DataInputStream結(jié)合使用;

ObjectOutputStream:對象字節(jié)輸出流,通常與ObjectInputStream結(jié)合使用;

PrintStream:字節(jié)打印流,字節(jié)輸出流進(jìn)行裝飾、提供打印各種數(shù)據(jù)類型的功能;

3、字符輸入流

Java IO流文件管理分析

Reader:字符輸入流,為所有字符輸入流提供一個(gè)標(biāo)準(zhǔn)、只有基本的讀取方法的定義和簡單的實(shí)現(xiàn);

InputStreamReader:字節(jié)轉(zhuǎn)換流,將字節(jié)流轉(zhuǎn)換成字符流,并且可以指定字節(jié)轉(zhuǎn)成字符時(shí)使用的編碼;

BufferedReader:緩沖字符輸入流,為字符輸入流提供緩沖功能、提高效率;

CharArrayReader:字符數(shù)組輸入流,將其內(nèi)置字符緩存數(shù)組中的數(shù)據(jù)讀取到應(yīng)用中;

PipedReader:管道字符輸入流,與PipedWriter結(jié)合使用、用于線程之間的通信;

FilterReader:過濾字符輸入流,為字符輸入流提供擴(kuò)展;

FileReader:文件字符輸入流,字符的形式讀取文件中的內(nèi)容;

4、字符輸出流

Java IO流文件管理分析

Writer:字符輸出流,所有字符輸出流提供一個(gè)標(biāo)準(zhǔn),基本寫入的方法和簡單的實(shí)現(xiàn);

OutputStreamWriter:字節(jié)輸出轉(zhuǎn)換流,用于將字節(jié)輸出流轉(zhuǎn)化成字符輸出流。可以指定編碼轉(zhuǎn)化;

BufferedWriter:緩存字符輸出流,提供緩沖功能、提高效率;

CharArrayWriter:字符輸出流,用于將字符寫入其內(nèi)置緩存字符數(shù)組中;

PipedWriter:管道字符輸出流,與PipedReader結(jié)合使用,用于線程之間的通信;

FileWriter:文件字符輸出流,用于將字符寫入到指定文件中;

PrintWriter:字符打印流,將各種數(shù)據(jù)以字符的形式打印;

三、File文件類

1、構(gòu)造方法

File(String pathname):指定文件或者文件夾的路徑創(chuàng)建一個(gè)File文件;

File(File parent,String child):根據(jù)parent抽象路徑名和child路徑名字符創(chuàng)建新的File實(shí)例;

2、路徑問題

絕對路徑:該文件在硬盤上的完整路徑。絕對路徑一般都是以盤符開頭的。

相對路徑: 相對路徑就是資源文件相對于當(dāng)前程序所在的路徑。

. 當(dāng)前路徑

.. 上一級路徑

3、文件的創(chuàng)建

createNewFile():在指定位置創(chuàng)建一個(gè)空文件,成功返回true,已存在就不創(chuàng)建然后返回false;

mkdir():在指定位置創(chuàng)建目錄,這只會創(chuàng)建最后一級目錄,上級目錄不存在就拋異常;

mkdirs():在指定位置創(chuàng)建目錄,這會創(chuàng)建路徑中所有不存在的目錄;

4、刪除文件

delete() 刪除文件或者一個(gè)空的文件夾,如果文件夾且不為空,則不能刪除,成功返回true,失敗返回false;

5、判斷方法

exists():文件或文件夾是否存在;

isFile():是否是一個(gè)文件,如果不存在,則始終為false;

isDirectory():是否是一個(gè)目錄,如果不存在,則始終是false;

6、獲取文件信息

getName():獲取文件或文件夾名稱,不包含上級路徑;

getPath():返回絕對路徑,可以是相對路徑,但是目錄要指定

四、編碼解碼

Java IO流文件管理分析

Java IO流文件管理分析

字節(jié)流讀取的是文件中的二進(jìn)制數(shù)據(jù),不會自動(dòng)轉(zhuǎn)為可以看懂的字符;字符流:把讀到的數(shù)據(jù)進(jìn)行對應(yīng)的編碼與解碼。

到此,關(guān)于“Java IO流文件管理分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI