Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在文件中找到当前行的地址?_Java_File - Fatal编程技术网

Java 如何在文件中找到当前行的地址?

Java 如何在文件中找到当前行的地址?,java,file,Java,File,如果我们假设文件1具有以下上下文 文件1 我读了一本书 玛丽喜欢红色。 现在我想在文件1中添加一个句子。我的问题是,我如何才能找到给定句子将写入文件中的确切地址1。我需要保存此地址以直接访问该行,而不是读取文件1的所有行以查找此特定句子。文件中某个位置(例如,行的开头)不是“地址”。它是从文件开始的偏移量(以字节为单位) 因此,如果要向文件追加一行,则在追加之前,该行开头的字节偏移量将是文件结尾的字节偏移量。这与文件的长度相同(以字节为单位)。您可以通过调用File.length()(对竞争条件

如果我们假设文件1具有以下上下文

文件1 我读了一本书

玛丽喜欢红色。 现在我想在文件1中添加一个句子。我的问题是,我如何才能找到给定句子将写入文件中的确切地址1。我需要保存此地址以直接访问该行,而不是读取文件1的所有行以查找此特定句子。

文件中某个位置(例如,行的开头)不是“地址”。它是从文件开始的偏移量(以字节为单位)

因此,如果要向文件追加一行,则在追加之前,该行开头的字节偏移量将是文件结尾的字节偏移量。这与文件的长度相同(以字节为单位)。您可以通过调用
File.length()
(对竞争条件问题进行模化…)来实现这一点

现在,如果您添加了很多行,反复询问文件的有效期有多长。还有一个事实是,如果对文件的输出进行了缓冲,则只有在刷新缓冲区内容时,文件大小才会得到更新。所以你也需要冲水,这样效率更低

如果您试图反复查找行位置,最好通过计算写入的字节数来跟踪文件大小/位置。如何最好地做到这一点取决于您正在写入的数据以及如何将其写入文件