-1

我想查找位于SDCARD(外部存储)上的文件。
我以只读模式打开它。

in = new RandomAccessFile(filePath, "r");

在我想在文件中查找之前,从此文件流中读取的一切都可以。

long seekPosition = 100;//sample value
in.seek(seekPosition);

寻找位置当然不大于文件大小并且不是负数。但是我面临一个没有细节的例外。这是异常跟踪:

java.io.RandomAccessFile.openCheck
(RandomAccessFile.java:258)
的 java.io.IOException at java.io.RandomAccessFile.seek(RandomAccessFile.java:648)
....

问题是为什么会发生这种情况,我该如何解决?
它是否与位于共享存储上的文件中的查找有关,或者我在此过程中遗漏了某些内容?
我主要关心的是以随机访问方法访问文件字节。

4

1 回答 1

1

那么(私有)RandomAccessFile.openCheck()方法(在 Harvest / Android 中)只是检查文件当前是否打开。如果它抛出一个IOException,那意味着你已经关闭了这个RandomAccessFile对象。

教训:如果您遇到意外/不理解的异常:

  1. 阅读异常消息1
  2. 查看堆栈跟踪以查看引发异常的位置。
  3. 找到源代码。(谷歌通常为我工作......)
  4. 查看源代码以了解为什么会抛出它。

1 - 在这种情况下它没有帮助,因为出于某种奇怪的原因,他们抛出IOException没有任何信息。在我看来这是一个BUG。

参考:

于 2013-07-21T03:58:37.107 回答