Java输入和输出

时间:2011-04-22 12:49:38

标签: java fileoutputstream filewriter dataoutputstream

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

i)个

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

ⅱ)

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

我认为Printer writer采用字符串并将其转换为unicode字符流,而dataoutput stream将数据项转换为字节序列。

你还会添加什么?

3 个答案:

答案 0 :(得分:1)

文件只包含字节,所以它最终都以字节结尾。

String已经是一个字符串。将String写入文件时,必须将其转换为字节流。

int是四个字节。 writeInt()将其转换为大端数字。

答案 1 :(得分:1)

来自DataOutputStream javadoc

  

数据输出流允许   应用程序编写原始Java数据   类型到一个输出流   便携式方式。然后应用程序可以   使用数据输入流来读取   数据重新进入。

来自PrintWriter javadoc

  

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

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

答案 2 :(得分:0)

可能重复已经说过的内容,但只是为了让它更明确:

当你使用打印机,并说你的int值为65时 - 打印作者将打印2个字符:'6'和'5'

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