[英]What is the Difference between PrintWriter and DataOutputStream?
我正在為Android的聊天室應用程序工作。 我讀了不同的教程; 其中一些使用PrintWriter發送數據,其中一些使用DataOutputStream。 這兩者有什么區別? 哪一個更適合聊天應用?
來自java文檔
DataOutputStream允許應用程序以可移植的方式將原始Java數據類型寫入輸出流。 然后,應用程序可以使用數據輸入流來重新讀取數據。
PrintWriter將對象的格式化表示形式打印到文本輸出流。 此類實現PrintStream中的所有打印方法。 它不包含寫入原始字節的方法,程序應使用未編碼的字節流。
在一句話中,區別在於:
OutputStream用於二進制數據。 作家(包括PrintWriter)用於文本數據
PrintWriter
將所有內容轉換為Ascii格式。 例如:
PrintWriter pw = new PrintWriter(new File("./test.txt"));
for (Integer word: words) {
pw.println(word);
}
在這段代碼中,通過調用pw.printin(word)
; 無論單詞的類型是什么(這里是整數),程序都會將其轉換為ASCII格式並存儲它。 因此,當我們想要檢索存儲的數據並再次讀取它時,程序必須執行另一種從文本格式轉換為原始格式的類型! - 在時間效率方面不好! 例如,如果該單詞是一個整數,在將其存儲到文件(現在是文本)之后,程序必須在將要檢索它時將其格式從String更改為整數!
但是, DataOutPutStream
使一切變得更加容易,因為它通過保持數據類型將數據存儲為字節。 因此,當我們運行波紋管塊時,程序將整數存儲為字節,當它想要檢索它時,它不需要任何類型的更改。 它存儲為整數並檢索為整數。 所以,它要快得多!
DataOutputStream dos = new DataOutputStream(
new FileOutputStream(new File("test2.txt")));
for (Integer word: words) {
dos.writeUTF(word);
}
dos.close();
DataOutputStream
和PrintWriter
都是PrintWriter
中的兩個類。
class DataOutputStream extends FilterOutputStream implements DataOutput {
}
Javadoc
說
“數據輸出流允許應用程序以可移植的方式將原始Java數據類型寫入輸出流。然后,應用程序可以使用數據輸入流來重新讀取數據。”
public class PrintWriter extends Writer {
}
將對象的格式化表示打印到文本輸出流。 此類實現PrintStream中的所有打印方法。 它不包含寫入原始字節的方法,程序應使用未編碼的字節流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.