如何在 Java 中返回随机访问文件中一行的位置?

pro*_*mer 0 java position random-access

我创建了一个随机访问文件,并在其中写入了一些信息。我想将随机访问文件中每一行的位置存储在一个数组中。我将有一个指向随机访问文件每一行的索引。所以我需要在我的索引中存储随机访问文件的行的位置。

我的程序如下

package randomaccessfile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class raf {

   public static void main(String[] args) throws FileNotFoundException, IOException {
      File file = new File("DocumentsFile.txt");
      RandomAccessFile raf = new RandomAccessFile(file, "rw");
      for (int i = 0; i <= 10 ; i++) {
         String sentence = "1 Info Name Surname"; //i create sentences in the random access file
         raf.seek(file.length());
         raf.writeBytes(sentence);
         raf.writeBytes("\r\n");
      }
      raf.close();
   }
}
Run Code Online (Sandbox Code Playgroud)

对于在随机访问文件中创建的每一行,我想将它们的位置存储在一个数组中。

然后这些位置将被存储在索引中。

有没有什么方法可以用来返回随机访问文件中一行的位置?

fge*_*fge 5

RandomAccessFile 已经提供了你想要的一切。

一方面,您seek()在这里不需要:文件指针会在每次写入操作时越过写入文件的字节。

这意味着,在您写入 line 之后n,对于 的任何值n.getFilePointer()RandomAccessFile对象中获取 的结果都会为您提供 line 的起始偏移量n+1。第 1 行从偏移量 0 开始,这几乎是您在这里真正需要考虑的唯一事情。