繁体   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