gpt4 book ai didi

java - 关于 DataOutputStream 的困惑

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

我编写了下面的代码来熟悉 DataOutputStream。我想我输出数据的文件中会有某种 11010111 二进制文件,相反,只有一些可读的字符串。我的问题是:使用DataOutputStream输出数据时,文件中不应该有二进制数据吗?

代码:

FileOutputStream fos = null;
try {
fos = new FileOutputStream("myData.dat");
} catch (FileNotFoundException e) {
System.out.println("File Not Found!!");
System.exit(-1);
}
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(fos));
try {
dos.writeChars("HELLO WORLD!!!\n");
dos.writeChars("HELLO PRETTIES!!!\n");
dos.writeChars("HELLO KITTY!!!");
dos.flush();
dos.close();
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
FileInputStream fis = null;
try {
fis = new FileInputStream("myData.dat");
} catch (FileNotFoundException e) {
System.out.println("File Not Found!!");
System.exit(-1);
}
BufferedReader br = new BufferedReader(new InputStreamReader(
new DataInputStream(fis)));
String s;
try {
while ((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}

最佳答案

计算机中的所有数据都是二进制的。一些二进制数据可能是可读文本,这就是您的情况。

writeChars 方法将字符串的每个 char 写入两个字节。如果您在十六进制查看器中打开该文件,您会看到每个字母的 ASCII 代码之前有一个 NUL (00) 字节。当您在文本编辑器中打开文件时,它会将文件中的字节解释为文本,因为这就是文本编辑器的作用:读取一堆(二进制)数据并将其作为文本显示给您。

编辑器如何做到这一点取决于编辑器。它要么跳过 NUL 字节并仅显示可读字节,要么将字节解释为以 UTF-16LE 编码的文本。

关于java - 关于 DataOutputStream 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13025051/

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