寫入int的時(shí)候 是不是應(yīng)該先轉(zhuǎn)成String 再轉(zhuǎn)成byte數(shù)組 再寫入文件呢?
2017-11-12
小白自己寫的字節(jié)流總結(jié),多多批評(píng)改正,謝謝。http://blog.csdn.net/jin970505/article/details/78473211
2017-11-08
老師這節(jié)講的如果子目錄的路徑下是個(gè)空文件夾,就不能顯示了
if(file2.isDirectory()){
//遞歸
if(file2.listFiles().length>0){//子目錄是路徑且不為空,輸出路徑下的文件名。
istDirectory(file2);
}else{
System.out.println(file2);//子目錄是路徑,其內(nèi)部為空,直接輸出路徑
}
}else{
System.out.println(file2);//子目錄不是路徑,輸出子目錄
}
內(nèi)嵌了一個(gè)if語句再判斷了一下
if(file2.isDirectory()){
//遞歸
if(file2.listFiles().length>0){//子目錄是路徑且不為空,輸出路徑下的文件名。
istDirectory(file2);
}else{
System.out.println(file2);//子目錄是路徑,其內(nèi)部為空,直接輸出路徑
}
}else{
System.out.println(file2);//子目錄不是路徑,輸出子目錄
}
內(nèi)嵌了一個(gè)if語句再判斷了一下
通過打印輸出 對(duì)象時(shí),會(huì)直接調(diào)用toString()方法,類似于print(object.toString())
2017-11-07
看了下大家關(guān)注的點(diǎn),個(gè)人認(rèn)為如下:
當(dāng)創(chuàng)建的數(shù)組長(zhǎng)度小于要寫入的字節(jié)時(shí),通過while循環(huán)分多次寫入,且out.write(buf,0,b),第二次不會(huì)覆蓋上一次寫入的;當(dāng)某一次循環(huán)無字節(jié)可讀時(shí)(讀完了),返回-1,此時(shí)的b確實(shí)等于-1 ,但是此時(shí)要結(jié)束while循環(huán)了。
當(dāng)然如果你創(chuàng)建的數(shù)組容量夠大,當(dāng)然可以不用循環(huán),即一次性讀入輸入流,再一次性從輸出流寫入文件:in.read(buf,0,buf.length);
out.write(buf);
當(dāng)創(chuàng)建的數(shù)組長(zhǎng)度小于要寫入的字節(jié)時(shí),通過while循環(huán)分多次寫入,且out.write(buf,0,b),第二次不會(huì)覆蓋上一次寫入的;當(dāng)某一次循環(huán)無字節(jié)可讀時(shí)(讀完了),返回-1,此時(shí)的b確實(shí)等于-1 ,但是此時(shí)要結(jié)束while循環(huán)了。
當(dāng)然如果你創(chuàng)建的數(shù)組容量夠大,當(dāng)然可以不用循環(huán),即一次性讀入輸入流,再一次性從輸出流寫入文件:in.read(buf,0,buf.length);
out.write(buf);
2017-11-06
其他方面,字符流和字節(jié)流全都是流式操作,和RandomAccess的隨機(jī)訪問不一樣,Random有一個(gè)指針,你可以隨便指定要訪問文件的位置,而且他的實(shí)例有很多種操作模式,可以同時(shí)實(shí)現(xiàn)讀寫。而字符和字節(jié)流則需要兩個(gè)Out與IN類。
2017-10-26
同樣的,
字符流類全部都
繼承于Reader和Writer抽象類
OutputStreamReader/writer類
與BufferedWriter/Reader是直接繼承于他們的,前者可以設(shè)置編碼格式,將對(duì)應(yīng)格式的文本文件解碼成字符流。后者可以直接讀取一整行,但是不會(huì)換行。
然后FileWriter和FileReader是直接繼承于OutputStreamReader/writer類的,他也封裝了一些底層操作,更加方便。但是沒有辦法設(shè)置解碼格式,只能按照項(xiàng)目默認(rèn)的設(shè)置解碼。
字符流類全部都
繼承于Reader和Writer抽象類
OutputStreamReader/writer類
與BufferedWriter/Reader是直接繼承于他們的,前者可以設(shè)置編碼格式,將對(duì)應(yīng)格式的文本文件解碼成字符流。后者可以直接讀取一整行,但是不會(huì)換行。
然后FileWriter和FileReader是直接繼承于OutputStreamReader/writer類的,他也封裝了一些底層操作,更加方便。但是沒有辦法設(shè)置解碼格式,只能按照項(xiàng)目默認(rèn)的設(shè)置解碼。
2017-10-26
那個(gè),我總結(jié)一下。前面主要講了字節(jié)流和字符流。
字節(jié)流都繼承于抽象類:InputStream和OutputStream分別用于讀入和寫出。
然后實(shí)現(xiàn)他們的類是:FileInput/OutputStream與BufferOutput/InputStream。但是前者每次只能讀取一個(gè)字節(jié),這很麻煩。
于是就有了繼承他們的類,DataOutputStream和DataInputStream,這個(gè)類封裝了FileInput/OutputStream的一些底層操作,可以直接輸入一個(gè)int,string。
而BufferOutput/InputStream可以利用緩沖區(qū),方便快捷的輸入輸出。
字節(jié)流都繼承于抽象類:InputStream和OutputStream分別用于讀入和寫出。
然后實(shí)現(xiàn)他們的類是:FileInput/OutputStream與BufferOutput/InputStream。但是前者每次只能讀取一個(gè)字節(jié),這很麻煩。
于是就有了繼承他們的類,DataOutputStream和DataInputStream,這個(gè)類封裝了FileInput/OutputStream的一些底層操作,可以直接輸入一個(gè)int,string。
而BufferOutput/InputStream可以利用緩沖區(qū),方便快捷的輸入輸出。
2017-10-26
所以 if語句應(yīng)該這么寫:if((int)buf[i]>0 && (int)buf[i]<=0xff)
2017-10-21