gpt4 book ai didi

Java:在不锁定文件的情况下打开和读取文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:15 25 4
gpt4 key购买 nike

我需要能够用 Java 模拟“tail -f”。我正在尝试读取一个日志文件,因为它正在被另一个进程写入,但是当我打开文件读取它时,它锁定了文件并且另一个进程无法再写入它。任何帮助将不胜感激!

这是我目前使用的代码:

public void read(){
Scanner fp = null;
try{
fp = new Scanner(new FileReader(this.filename));
fp.useDelimiter("\n");
}catch(java.io.FileNotFoundException e){
System.out.println("java.io.FileNotFoundException e");
}
while(true){
if(fp.hasNext()){
this.parse(fp.next());
}
}
}

最佳答案

由于文件截断和(中间)删除等特殊情况,重建 tail 很棘手。要在不锁定的情况下打开文件,请将 StandardOpenOption.READ 与新的 Java 文件 API 一起使用,如下所示:

try (InputStream is = Files.newInputStream(path, StandardOpenOption.READ)) {
InputStreamReader reader = new InputStreamReader(is, fileEncoding);
BufferedReader lineReader = new BufferedReader(reader);
// Process all lines.
String line;
while ((line = lineReader.readLine()) != null) {
// Line content content is in variable line.
}
}

对于我在 Java 中创建尾部的尝试,请参阅:

您可以随意从该代码中获取灵感,或直接复制您需要的部分。如果您发现任何我不知道的问题,请告诉我。

关于Java:在不锁定文件的情况下打开和读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com