- 相關(guān)推薦
java的I/O流--個(gè)人總結(jié)(上)
怎么又回過(guò)頭來(lái)看I/O流操作呢?溫故知新嘛,況且以后我的研究方向都會(huì)涉及帶內(nèi)存和多線程的操作,I/O與這些太有關(guān)聯(lián)了!其實(shí)我寫這個(gè)的個(gè)人總結(jié)的初衷并不是這樣,是在學(xué)習(xí)Struts2的文件上傳和下載操作時(shí)遇到了一些小問(wèn)題。一下是我的個(gè)人總結(jié):
java.io.包內(nèi)的類真是太多了,簡(jiǎn)直是排山倒海!但是其中許多類都是裝飾類,采用的裝飾著模式。所以我們一定要熟悉各種類之間的層次結(jié)構(gòu)!
java.io.File類:這是對(duì)文件本身進(jìn)行操作的構(gòu)造方法:public File(String pathname)
創(chuàng)建文件對(duì)象的方法:f對(duì)象.createNewFile()其返回值是一個(gè)boolean值
還有其他一些常用方法:f.delete(),f.mkdir().
其中全局常量pathSeparator的路徑分隔符,顯示了java的可移植性強(qiáng)大的特點(diǎn)
2.RandomAccessFile類對(duì)文件內(nèi)容進(jìn)行操作的隨機(jī)讀取類
構(gòu)造方法:public RandomAcessFile(文件對(duì)象模式)會(huì)拋出異常
3.字節(jié)流
字節(jié)流有OutputStream和InPutStream,但是他們都是抽象類,必須通過(guò)子類開實(shí)例化對(duì)象,然后對(duì)byte數(shù)組進(jìn)行操作。如實(shí)操作文件,可以使用其子類FileOutPutStream類,通過(guò)向上轉(zhuǎn)型,可以為OutPutStream實(shí)例化。
方法有:OutPutStream的對(duì)象.write(byte|b單個(gè)字節(jié))寫入到輸出流中去;InputStream的方法和OutPutStream是一樣的對(duì)象.read(|byte)將對(duì)象InputStream流中的數(shù)據(jù)讀進(jìn)數(shù)組,或者返回一個(gè)int值是否讀完。要強(qiáng)調(diào)的是最后都要close()關(guān)閉字節(jié)流!
4.字符流
1個(gè)字符是2字節(jié)是2Byte其單位是大于字節(jié)流的字符輸出流Writer和字符輸入流Reader,他們的操作基本和字節(jié)流類似的
但是區(qū)別是:字節(jié)流操作不會(huì)使用到緩沖區(qū)(內(nèi)存),而字符流操作需要使用!
5.轉(zhuǎn)換流
OutputStreamWrite(Writer的子類):xxxx--字符流--字節(jié)流
InputStreamReader(Reader的子類):文件--字節(jié)流--字符流
6.內(nèi)存操作流
以上講解的程序中的輸出和輸入都是從文件中來(lái)的,當(dāng)然也可以將輸入的位置設(shè)置在內(nèi)存上
使用ByteArrayStreamInputStream,ByteArrayOutPutStream完成輸入輸出。和字節(jié)流字符流一樣,操作對(duì)象都可以看成是Stream流。
構(gòu)造方法ByteArrayInputStream(byte buf)只使用構(gòu)造方法將內(nèi)容讀取到內(nèi)存中去
構(gòu)造方法ByteArrayOutPutStream()創(chuàng)建對(duì)象,將內(nèi)容寫入bos流中:bos.write(int b)
bos.write(bis.read()):以bis讀出再寫入bos中。然后str=bos.toString 7.管道流
PipedOutputStream和PipeIntputStream使用時(shí),還要使用Connect()方法將兩個(gè)流連接起來(lái)。
pos.connect(pis);
【java的I/O流--個(gè)人總結(jié)(上)】相關(guān)文章:
Module 5 Unit 1 I get up at seven o’clock.(教案)04-24
java工作總結(jié)04-24
O的聯(lián)想作文08-09
a o e 教案04-25
學(xué)科術(shù)語(yǔ) O05-04