Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_Io - Fatal编程技术网

Java—在另一个进程更新文件时读取该文件

Java—在另一个进程更新文件时读取该文件,java,file,io,Java,File,Io,可能重复: 我有一个程序(陷阱接收器),它在文件的末尾附加一个字符串。这个程序基本上记录它所做的一切 我想让我的程序读取这个日志文件。这样做我会遇到什么问题?最有效的方法是什么。在另一个进程更新文件时读取该文件。假设此记录器与大多数记录器一样,不只是附加任何类型的字符串,而是添加整行 您可以简单地使用bufferedReader并在没有任何内容时等待: BufferedReader br = new BufferedReader(new FileReader("path")); String

可能重复:

我有一个程序(陷阱接收器),它在文件的末尾附加一个字符串。这个程序基本上记录它所做的一切


我想让我的程序读取这个日志文件。这样做我会遇到什么问题?最有效的方法是什么。在另一个进程更新文件时读取该文件。

假设此记录器与大多数记录器一样,不只是附加任何类型的字符串,而是添加整行

您可以简单地使用bufferedReader并在没有任何内容时等待:

BufferedReader br = new BufferedReader(new FileReader("path"));
String line;
while (true) {
    line = br.readLine();
    if (line != null) {
        // do something
    } else {
        Thread.sleep(DELAY);   // DELAY could be 100 (ms) for example     
    }
}
当然,如果应用程序还有其他任务要完成,则必须在单独的线程中执行此操作


如果您想避免拉取,在非常罕见的日志记录的情况下,您可以使用,但我从未在简单的文件上尝试过,我不确定它是否总是可靠的。

假设此日志记录程序与大多数日志记录程序一样,不只是附加任何类型的字符串,而是添加整行

您可以简单地使用bufferedReader并在没有任何内容时等待:

BufferedReader br = new BufferedReader(new FileReader("path"));
String line;
while (true) {
    line = br.readLine();
    if (line != null) {
        // do something
    } else {
        Thread.sleep(DELAY);   // DELAY could be 100 (ms) for example     
    }
}
当然,如果应用程序还有其他任务要完成,则必须在单独的线程中执行此操作


如果你想避免拉扯,在非常罕见的伐木情况下,你可以使用a,但我从未在简单的文件上尝试过,我不确定它是否总是可靠的。

-1对于重复:你可以在这里找到答案:请在发布之前检查问题是否已经存在。-1对于重复:你可以在这里找到答案:请在发布之前检查问题是否已经存在它。非常感谢你……我在谷歌上做了一些研究,发现了一种叫做互斥的东西,我相信它就像文件锁一样。这种方法会绕过这个问题吗?互斥是另一回事:它们用于同步不同的线程。我不认为互斥在这里有用。我明白了。非常感谢。此代码将用于最有可能全天候运行的服务器。希望这段代码不会崩溃哈哈。我会让你知道事情的进展。再次感谢。不要忘记捕获IO异常,如果需要,请重新打开读卡器。另一个细节:大多数24/7日志记录者每天都会更改文件(或者当文件太大时),因此您可能需要查看目录,而不仅仅是文件。非常感谢。我会尽我所能写出最好的代码。非常感谢你……我在谷歌上做了一些研究,发现了一种叫做互斥的东西,我相信它就像文件锁一样。这种方法会绕过这个问题吗?互斥是另一回事:它们用于同步不同的线程。我不认为互斥在这里有用。我明白了。非常感谢。此代码将用于最有可能全天候运行的服务器。希望这段代码不会崩溃哈哈。我会让你知道事情的进展。再次感谢。不要忘记捕获IO异常,如果需要,请重新打开读卡器。另一个细节:大多数24/7日志记录者每天都会更改文件(或者当文件太大时),因此您可能需要查看目录,而不仅仅是文件。非常感谢。我会尽我所能写出最好的代码。