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

发布于 2024-12-16 22:40:35 字数 517 浏览 0 评论 0原文

我正在尝试使用 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();

但我没有得到与我编写的相同的数字;相反,我得到 EOF 异常。

I am trying to write Long using Java command for Random File IO as follows:

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);                  

The problem is that when I write 7-15 digit number using writeLong ; it writes 8 bytes in file.
Then I am trying to read the same record into my program and decode it

Long l=in.readLong();

but I dont get the same number as I wrote ; Instead Iget EOF exception.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黑色毁心梦 2024-12-23 22:40:35

64 位长的长 ID。这就是 8 个字节。 DataOutputStream 的 writeLong 方法写入 long 的二进制表示形式,而不是文本表示形式。
如果不知道用于读取长值的代码,就不可能知道它为什么不起作用。

A long id 64-bit long. That makes 8 bytes. The DataOutputStream's writeLong method writes the binary representation of the long, not the textual one.
Without knowing the code used to read the long value, it's impossible to tell why it doesn't work.

誰認得朕 2024-12-23 22:40:35

您的示例和注释中给出的代码应该可以工作。事实上,它并不表明这里发生了其他事情:

  • 也许写入和读取发生在不同的文件上。
  • 也许正在写入的文件在您尝试读取它之前没有刷新/关闭。
  • 也许其他东西正在覆盖该文件。
  • 也许您提供的代码片段与真实代码的差异足以产生影响。

在尝试读取文件的代码中,打印调用 f.length() 时得到的内容。

The code given in your example and comment should work. The fact that it doesn't suggests that something else is going on here:

  • Maybe the writing and reading is happening on different files.
  • Maybe the file being written is not flushed / closed before you attempt to read it.
  • Maybe something else is overwriting the file.
  • Maybe the snippets of code you have provided are different enough to the real code to make a difference.

In the code that attempts to read the file, print what you get when you call f.length().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文