Java.Random.IO中的ReadLong和WriteLong方法

时间:2011-11-20 11:16:30

标签: java random io format long-integer

我正在尝试使用Java命令为随机文件IO编写Long,如下所示:

fstreamOut = new FileOutputStream(new File("C:\\Basmah","dataOutput.7"),true);
DataOutputStream out=new DataOutputStream(fstreamOut);
Long p= Long.parseLong(longNumberInString );  // Number of digits for this long key are 7-15
              out.writeLong(p);                  

问题是当我用writeLong写7-15位数字时;它在文件中写入8个字节。 然后我试图将相同的记录读入我的程序并解码

Long l=in.readLong();

但我没有得到与我写的数字相同的数字;而是Iget EOF例外。

2 个答案:

答案 0 :(得分:1)

64位长的长ID。那就是8个字节。 DataOutputStream的writeLong方法写入long的二进制表示,而不是文本的二进制表示。 在不知道用于读取长值的代码的情况下,无法分辨为什么它不起作用。

答案 1 :(得分:0)

您的示例和评论中给出的代码应该有效。这并不意味着其他事情发生在这里:

  • 也许写作和阅读发生在不同的文件上。
  • 在您尝试阅读之前,可能没有刷新/关闭正在写入的文件。
  • 也许别的东西会覆盖文件。
  • 也许您提供的代码片段与实际代码的差异足以产生影响。

在尝试阅读文件的代码中,打印您拨打f.length()时获得的内容。