2011-07-30 57 views
16
的區別

首先,我們爲PrintWriter有什麼的PrintWriter和OutputStream

java.io.File f=new java.io.File("s.txt"); 

    java.io.PrintWriter out=new java.io.PrintWriter(f); 

    out.print(5); 

    out.print(7); 

    out.close(); 

然後我們的OutputStream

java.io.File f=new java.io.File("s.txt"); 

java.io.FileOutputStream out=new java.io.FileOutputStream(f); 

    out.write(5); 

    out.write(7); 

    out.close(); 

請告訴我有什麼區別?

回答

28

OutputStreams是指二進制數據。作家(包括PrintWriter)是指文字數據。

因爲您打電話給PrintWriter.write(int)寫單個字符 - 如果您使用的字符編碼只是將字符映射到同一字節,對於小於127的字符,您可能看不到您的具體情況有所不同,那麼您會看到相同的結果。但是,如果你給它一個不同的編碼,然後你會看到一個區別。

PrintWriter也有所不同,因爲它可以抑制IO異常 - 就像PrintStream一樣,它是PrintWriter的二進制流。

2

從這個java2novice.com link我摘錄如下,即類似於喬恩說:

ServletOutputStream的:ServletResponse.getOutputStream() returns一個ServletOutputStream 適合在響應寫入二進制數據。小容器不編碼二進制數據,它原樣發送原始數據 。

的PrintWriter:ServletResponse.getWriter()返回PrintWriter對象,它發送 字符文本到客戶端。 PrintWriter使用由getCharacterEncoding()返回的字符 編碼。如果沒有指定響應的 字符編碼,則它會執行默認的 字符編碼。

相關問題