簡體   English   中英

DataOutputStream是否不生成字節作為輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM