[英]DataOutputStream not generating bytes as output?
DataOutputStream
類用於將原始數據類型編寫為二進制格式。 我一直在使用DataOutputStream
類的void writeChars(String s)
方法,以使用程序將其寫入文件中...
public class FileDemo {
public static void main(String[] args) throws IOException{
String x= "haha";
DataOutputStream out = new DataOutputStream(new FileOutputStream("E:/a.txt"));
out.writeChars(x);
out.close();
}
}
現在,文件a.txt具有以下文本作為輸出(所有字符用空格分隔):
h a h a
我的問題是為什么文件沒有字符串作為字節? 並且還請說明為什么我們可以使用DataOutputStream函數編寫所有原語時為什么需要使用PrintWriter ...
DataOutputStream
完全可以實現其目的。 它把字符寫為字節。 一個字符由兩個字節組成。
所以它把字符haha
寫成字節
0, 104, 0, 97, 0, 104, 0 ,97
因為char h
表示為兩個字節0, 104
。
當您在文本編輯器中打開文件時,它將嘗試根據指定的編碼來解釋字節。 例如,記事本默認情況下將使用ANSI。
如果在Notepadd ++中打開文件,它將顯示0
字節。
如果要將字符轉換為已定義編碼的字節表示,請使用OutputStreamWriter 。 例如
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
"C:/Dev/a.txt"), Charset.forName("windows-1252"));
out.write(x);
out.close();
這將輸出字節
104, 97, 104, 97
您是否在尋找writeBytes(s)? 還是您想知道為什么文件不包含1010101010之類的內容?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.