亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

java讀取apollo配置 java判斷文件夾是否存在該文件( 三 )


傳遞給字符流的字節(jié)流不需要單獨的進(jìn)行關(guān)系 , 在字符流關(guān)閉的時候會調(diào)用字節(jié)流的close()方法 。
FileWriter & FileReader
FileWriter 和 FileReader 分別是 OutputStreamWriter 和 InputStreamReader 的子類 , 只不過他們是只能操作系統(tǒng)默認(rèn)編碼表的字符流 。也可以這么簡單的理解: OutputStreamWriter 和 InputStreamReader 的構(gòu)造函數(shù)不支持傳遞第二個參數(shù) , 就是操作系統(tǒng)默認(rèn)的編碼表 。所以在使用上只需要注意操作的文件編碼格式是否與系統(tǒng)默認(rèn)的編碼格式一致即可 。既然不傳遞第二個參數(shù)就可以達(dá)到相同的效果 , 為什么還會有這個兩個類呢?因為這兩個類操作簡單 。下面還是以復(fù)制文件為例 。
File sourceFile = new File("sourceFile.txt"); File destFile = new File("destFile.txt"); FileReader reader=null;FileWriter writer=null; try {reader= new FileReader(sourceFile);writer =new FileWriter(destFile); char[] cbuf =new char[1024];int len=0;while((len=reader.read(cbuf))!=-1) { System.out.println(String.copyValueOf(cbuf,0,len));writer.write(cbuf, 0,len);} } catch(IOException ex) { } finally { try{reader.close();}catch(IOException ex) { } try{writer.close();}catch(IOException ex) { } }無論是使用 FileWriter & FileReader 還是 OutputStreamWriter & InputStreamReader  , 在他們的內(nèi)部都會存在緩沖區(qū)的 , 默認(rèn)大小為8192字節(jié) 。如果不對流進(jìn)行關(guān)閉的話 , 數(shù)據(jù)會繼續(xù)存在緩沖區(qū) , 不會存儲到文件上 , 除非手動調(diào)用flush方法或者是在緩沖區(qū)中寫入的數(shù)據(jù)超過了緩沖區(qū)的大小 , 數(shù)據(jù)才會刷新到文件上 。而調(diào)用close方法的內(nèi)部會先調(diào)用flush刷新緩沖區(qū) 。
BufferedOutputStream & BufferedInputStream & BufferedWriter & BufferedReader
這四個Buffered開頭的類分別是為字節(jié)流和字符流提供一個合適的緩沖區(qū)來提高讀寫性能 , 尤其是在讀寫數(shù)據(jù)量很大的時候效果更佳顯著 。其用法和不帶Buffered的流沒有任何區(qū)別 , 只不過在不帶Buffered流的基礎(chǔ)上提供了一些更加便利的方法 , 例如newLine() , ReadLine()和ReadAllBytes() , 他們會根據(jù)操作系統(tǒng)的不同添加合適的換行符 , 根據(jù)合適的換行符來讀取一行數(shù)據(jù)和讀取所有字節(jié) 。來看一下用法以緩沖字符流為例
File sourceFile = new File("sourceFile.txt");File destFile = new File("destFile.txt");BufferedWriter bw =null;BufferedReader br =null;try { FileReader reader= new FileReader(sourceFile);FileWriter writer=new FileWriter(destFile);bw =new BufferedWriter(writer); br =new BufferedReader(reader); String line =null; while((line=br.readLine())!=null) { bw.write(line); bw.newLine(); }}catch(IOException ex) {}finally { try { bw.close();} catch(IOException ex) {}try { br.close();} catch(IOException ex) {} }上述的代碼中有兩點需要注意:
當(dāng)按照行來讀取字符的時候 , 當(dāng)下一行沒有內(nèi)容 , 繼續(xù)讀取下一行的內(nèi)容 , 結(jié)果會返回 null , 可以此來判斷文件中是否還有字符 。當(dāng)讀取的文件行返回為null后 , 仍然會執(zhí)行一次循環(huán) , 此時調(diào)用newLine() 會在寫入的文件中多添加一個換行符 , 這個換行符無關(guān)緊要 , 可以不用考慮處理掉 。ObjectOutputStream & ObjectInputStream
在編寫程序的過程中 , 難免會遇到和外部程序進(jìn)行數(shù)據(jù)交流的需求 , 例如調(diào)用外部服務(wù) , 并傳輸一個對象給對方 , 此時需要把傳輸對象序列化為流才能和外部程序進(jìn)行交互 。又比如需要對一個對象進(jìn)行深拷貝 , 也可以將對象序列化為流之后再反序列化為一個新的對象 。Java提供了ObjectOutputStream 和 ObjectInputStream 來實現(xiàn)對對象的序列化和反序列化 。序列化后的流為字節(jié)流 , 為了清晰的看到序列化后的結(jié)果 , 以下將序列化后的流輸出到文件中然后在反序列化為一個對象 , 具體來看一看吧 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: