JAVA中的IO

字節(jié)流類

InputStream與OutputStream

兩者分別是字節(jié)輸入流和字節(jié)輸出流的基類寥闪。

InputStream主要完成了read()方法和read(byte[])方法疲憋。
  • read()方法
    返回從InputStream流內(nèi)讀取到的一個字節(jié)內(nèi)容梁只,如:
int data = inputstream.read();
  • read(byte[])方法
    此方法會去一下子讀取給定字節(jié)容量的字節(jié),且返回已經(jīng)讀取過的字節(jié)數(shù)
OutputStream主要完成了write(int)方法和write(byte[])方法
  • write(int)方法
    其實(shí)只寫入低8位秋忙,其余24位舍棄构舟。
  • writ(byte[])方法
    傳入byte數(shù)組,將字節(jié)數(shù)組中所有數(shù)據(jù)寫入到輸出流监嗜。

FileInputStream與FileOutputStream

FileInputStream可以用文件路徑也可以用文件對象作為構(gòu)造函數(shù)的參數(shù)抡谐,如:
InputStream input = new FileInputStream("c:\\data\\input-text.txt");

File file = new File("c:\\data\\input-text.txt");
InputStream input = new FileInputStream(file);

其read方法與其父類類似,也是一個字節(jié)一個字節(jié)讀取刽肠。

FileOutputStream
  • write(int)方法
    寫入某個字節(jié)
  • write(byte[])方法
    寫入某個字節(jié)數(shù)組
  • 構(gòu)造方法
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", true);

true追加免胃,false覆蓋半抱。

  • flush()方法
    寫入數(shù)據(jù)刷新到磁盤中。

ByteArrayInputStream與ByteArrayOutputStream

ByteArrayInputStream
  • 普通read()方法
    與父類類似扼雏,進(jìn)行一般的讀取夯膀。
  • read(byte b[], int off, int len)方法
    讀取字節(jié)數(shù)組苍蔬,返回讀取的總字節(jié)數(shù)。
ByteArrayOutputStream
  • write(int)方法
    寫入普通一個字節(jié)俺猿。
    -write(byte[] b,int off,int len)方法
    寫入字節(jié)數(shù)組中選中長度格仲。
  • toByteArray()方法
    獲取輸出流中的數(shù)據(jù)。

BufferedInputStream與BufferedOutputStream

BufferedInputStream

它為輸入流提供緩沖區(qū)谊惭,提高磁盤IO速度否过,用法:

InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\input-file.txt"), 8 * 1024);

這樣一次可以讀取磁盤中大塊內(nèi)容,減少磁盤IO的次數(shù)药磺。
其他方法與InputStream相同煤伟。

BufferedOutputStream

用法類似:

OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\output-file.txt"), 8 * 1024);

其他方法與OutputStream相同,需要flush方法刷新入磁盤围辙。

字符流類

Reader和Writer

一般都用它們的子類放案,一個用于讀取文本,一個用于寫入文本掸冤,都以字符為單位友雳。

InputStreamReader和OutputStreamWriter

這兩個類可以把字節(jié)流轉(zhuǎn)換成字符流。

InputStreamReader

通過包含一個InputStream饺藤,將輸入字節(jié)流轉(zhuǎn)換成字符流,如下:

InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader reader = new InputStreamReader(inputStream);
  • read()
    讀取單個字符
  • read(char [])
    讀取的字符存入字符數(shù)組中罗丰,返回讀取到的字符數(shù)咽袜。
OutputStreamWriter

它包含一個OutputStream枕稀,將輸出字節(jié)流編程字符流,如下:

Writer writer = new OutputStreamWriter(outputStream);
writer.write("Hello World");

這樣可以直接將字符寫入凹联。

  • write(int)
    將單個字符寫入
  • viod write(String str,int off,int len)
    寫入字符串中部分字符
  • void write(char[] cbuf, int off, int len)
    寫入字符數(shù)組中部分字符

FileReader和FileWriter

FileReader
  • read()
    直接讀取單個字符哆档,并返回讀取到內(nèi)容的int變量
FileWriter
  • write(int/String)
    寫入某個字符或者字符串

BufferedReader和BufferedWriter

這兩個類與BufferedInputStream和BufferedOutputStream類似,為字符輸入輸出流提供緩沖澳淑。
用法如下:

Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"), 8 * 1024);
Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"), 8 * 1024);

BufferedReader有readline()方法可以一次性讀取一行文本插佛。
但BufferedWriter需要newline()之后才能write()文本。

CharArrayReader和CharArrayWriter

CharArrayReader將字符數(shù)組轉(zhuǎn)換成字符流然后進(jìn)行讀取氢拥。
CharArrayWriter其實(shí)是將字符或者字符串寫入到CharArrayWriter對象中锨侯,然后可以進(jìn)行toCharArray()獲取。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叁怪,一起剝皮案震驚了整個濱河市深滚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌展箱,老刑警劉巖蹬昌,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異昆汹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)满粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門映皆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轰枝,“玉大人,你說我怎么就攤上這事鞍陨。” “怎么了缭裆?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵澈驼,是天一觀的道長韧衣。 經(jīng)常有香客問我,道長畅铭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任假残,我火速辦了婚禮辉懒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眶俩。我一直安慰自己快鱼,他們只是感情好纲岭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布止潮。 她就那樣靜靜地躺著钞楼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪燃乍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天橘沥,我揣著相機(jī)與錄音夯秃,去河邊找鬼痢艺。 笑死,一個胖子當(dāng)著我的面吹牛色建,可吹牛的內(nèi)容都是我干的舌缤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼陵吸,長吁一口氣:“原來是場噩夢啊……” “哼介牙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起环础,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤线得,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贯钩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呵晨,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摸屠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年季二,在試婚紗的時候發(fā)現(xiàn)自己被綠了揭措。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡桑嘶,死狀恐怖躬充,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情充甚,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布盈蛮,位于F島的核電站技矮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏袒炉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一梳杏、第九天 我趴在偏房一處隱蔽的房頂上張望淹接。 院中可真熱鬧,春花似錦劲适、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愕贡。三九已至,卻和暖如春墩虹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诫钓。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工篙螟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惧所。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓墅冷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寞忿。 傳聞我的和親對象是個殘疾皇子腔彰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序運(yùn)行的過程中霹抛,可能需要對一些設(shè)備進(jìn)...
    征程_Journey閱讀 960評論 0 1
  • 1 IO(三)No20 1.1Properties 屬性集 【 Properties屬性集卷谈,主要用于操作配置屬...
    征程_Journey閱讀 893評論 0 1
  • 1 IO(二)No19 【 緩沖流:內(nèi)置了緩沖區(qū),對現(xiàn)有的流對象進(jìn)行了封裝端逼,實(shí)現(xiàn)了高效的讀寫操作并增強(qiáng)了功能 ...
    征程_Journey閱讀 712評論 0 1
  • 本文轉(zhuǎn)自我的博客顶滩,您可以閱讀原文. File類 概覽 創(chuàng)建一個代表一個文件或者文件夾對象,也就是你要操作的目標(biāo)礁鲁。 ...
    xuan241閱讀 347評論 0 0
  • Java中的IO IO流也是種對象,Java中的一切都是對象仅醇。 IO操作的目標(biāo):從數(shù)據(jù)源中讀取數(shù)據(jù),以及將數(shù)據(jù)讀寫...
    謝審言_shen閱讀 485評論 0 0