gpt4 book ai didi

java - DataOutputStream 不生成字节作为输出?

转载 作者:行者123 更新时间:2023-12-01 12:27:12 25 4
gpt4 key购买 nike

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 字节。

enter image description here

使用 OutputStreamWriter如果您希望将 char 转换为已定义编码的字节表示形式。例如

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
"C:/Dev/a.txt"), Charset.forName("windows-1252"));
out.write(x);
out.close();

这将输出字节

104, 97, 104, 97

关于java - DataOutputStream 不生成字节作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26233417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com