當我們使用Java往文件寫入數據的時候,我們有兩種方式,使用FileOutputStream或FileWriter。
FileOutputStream:
File fout = new File(file_location_string); FileOutputStream fos = new FileOutputStream(fout); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos)); out.write("something");
FileWriter:
FileWriter fstream = new FileWriter(file_location_string); BufferedWriter out = new BufferedWriter(fstream); out.write("something");
以上兩種方式都可以正常運行,但是它們究竟有何區別呢?
關於以上這兩個類,有太多需要討論,它們都很好的實現了常見操作系統的文件I/O理念。然而,我們並不關心它們是如何設計的,我們關注的是如何選擇,以及為什麼選擇它。
從Java的API規范中是這樣描述它們的:
FileOutputStream適用於寫入原始字節數據,如圖像。
FileWriter適用於字符流的寫入。
如果你熟悉設計模式的話,FileWriter是裝飾器模式的一個典型應用。我這有一個裝飾器模式的簡單教程,因為它非常有用,且被應用到很多設計中。
另外,FileOutputStream可以將文件轉成字節數組。
譯文鏈接:http://www.programcreek.com/2011/03/fileoutputstream-vs-filewriter/