DataOutputStream
类用于将原始数据类型写为二进制格式。我一直在使用void writeChars(String s)
类的DataOutputStream
方法,使用该程序将其写入文件...
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 ...
答案 0 :(得分:1)
DataOutputStream
完全符合它的目的。它将字符写为字节。一个char由两个字节组成。
因此它将字符haha
写为字节
0, 104, 0, 97, 0, 104, 0 ,97
因为char h
表示为两个字节0, 104
。
在文本编辑器中打开文件时,它会尝试根据指定的编码解释字节。例如,记事本默认使用ANSI。
如果您在Notepadd++中打开文件,它会显示0
个字节。
如果希望将char转换为已定义编码的字节表示,请使用OutputStreamWriter。 E.g。
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
"C:/Dev/a.txt"), Charset.forName("windows-1252"));
out.write(x);
out.close();
这将输出字节
104, 97, 104, 97
答案 1 :(得分:0)
您在寻找writeBytes吗? 或者你想知道为什么文件不包含像1010101010这样的东西?