Java IO - 读取一个大文件,而其他应用程序写入它

标签 java file-io

我想在 weblogic 写入日志(缓冲)时使用 java 读取 weblogic 日志文件,但我只想读取开始读取时出现的内容。

我该怎么做?

public class DemoReader implements Runnable{

    public void run() {
        File f = new File ("c:\\test.txt");
        long length = f.length();
        long readedBytes = 0; 
        System.out.println(length);
        try {
            BufferedReader fr = new BufferedReader(new FileReader(f));
            String line = "";
            while((line = fr.readLine()) != null && readedBytes < length){
                readedBytes += line.getBytes().length;
                if(readedBytes > length){
                    break;
                }else{
                    System.out.println(line);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

最佳答案

可以在开始读取的那一刻获取文件的大小,然后读取N个字节(假设文件没有被写入者锁定,其内容来自0N 不会改变)。

关于Java IO - 读取一个大文件,而其他应用程序写入它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284782/

相关文章:

java - 在 Thread.run 中处理 java 异常

java - 如何使用java检查appium服务器是否已经在运行

c++ - 如何将名称读入指针数组并输出?

c++ - Windows 中的短文件名与长文件名

iOS : NSFileManager copyItemAtPath is memory intensive

java - 打印 List/String 类型的 Arraylist 的所有元素

java - 运行多个 Java 版本

java - 如何以反射方式调用 Java 8 默认方法

JAVA-读取文件 1 时出错(错误)

c# - C++ 中是否有 BinaryReader 来读取从 C# 中的 BinaryWriter 写入的数据?