Java DataOutputStream是否不生成字节作为输出?
Java DataOutputStream是否不生成字节作为输出?,java,file,io,Java,File,Io,DataOutputStream类用于将基本数据类型写入二进制格式。我一直在使用DataOutputStream类的void writeChars(String s)方法,使用程序将其写入文件中 public class FileDemo { public static void main(String[] args) throws IOException{ String x= "haha"; DataOutputStream out = new Data
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现在有以下文本作为输出(所有字符以空格分隔):
我的问题是,为什么文件没有字节形式的字符串??
还请解释一下,当我们可以使用DataOutputStream的函数来编写所有原语时,为什么需要使用PrintWriter…您是否在寻找writeBytes?
或者您想知道为什么文件不包含类似1010101010的内容吗?数据输出流正是它的用途。它以字节的形式写入字符。一个字符由两个字节组成 因此,它将字符
haha
写入字节
0, 104, 0, 97, 0, 104, 0 ,97
因为charh
表示为两个字节0104
在文本编辑器中打开文件时,它会尝试根据指定的编码解释字节。例如,记事本默认使用ANSI
如果在中打开文件,它可以显示0
字节
如果希望将字符转换为已定义编码的字节表示形式,请使用。例如
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
"C:/Dev/a.txt"), Charset.forName("windows-1252"));
out.write(x);
out.close();
这将输出字节
104, 97, 104, 97
是的,正是我所期望的10101010(二进制字符串),您不会看到,因为文本编辑器会将二进制文件转换为可读的字符/字符串。您可以查找一些util方法,如Integer.toBinaryString(10),它将int转换为二进制字符串,然后将其打印到文件中。
104, 97, 104, 97