0

解释以下两个用于将 int i 输出到文件的代码片段的输出之间的区别:

一世)

PrintWriter outfile = new PrintWriter(new FileWriter("ints.txt"));
outfile.print(i);

ii)

DataOutputStream out = new DataOutputStream(new FileOutputStream("ints.dat"));
out.writeInt(i);

我认为打印机编写器接受一个字符串并将其转换为 unicode 字符流,而 dataoutput 流将数据项转换为字节序列。

你还要补充什么?

4

3 回答 3

1

DataOutputStreamjavadoc

数据输出流允许应用程序以可移植的方式将原始 Java 数据类型写入输出流。然后,应用程序可以使用数据输入流来读回数据。

来自PrintWriterjavadoc

将对象的格式化表示打印到文本输出流。

一切都只是字节,但它们代表不同的东西。使用 aDataOutpuStream可以获得可以直接读回原始 Java 类型的字节int,而使用 aPrintWriter则不能。

于 2011-04-22T13:01:53.520 回答
1

文件仅包含字节,因此最终都以字节结尾。

字符串已经是字符流。当您将字符串写入文件时,它必须将其转换为字节流。

一个 int 是四个字节。writeInt() 把它变成一个大端数。

于 2011-04-22T12:52:51.520 回答
0

可能会重复已经说过的话,但只是为了使其更明确:

当您使用 printwriter 并说您的 int 值为 65 - print writer 将打印 2 个字符:'6' 和 '5'

当您使用输出流时,它会打印字节,因此它将向文件写入一个值为 65 的字节——这恰好是 'A' 的 ASCII/UTF-8 字符代码,因此如果您在在文本编辑器中,您将看到一个“A”字符——而不是上面的“6”后跟“5”。

于 2011-04-22T13:05:57.390 回答