Java 是否有类似于滚动输出流的东西?

Java 是否有类似于滚动输出流的东西?,java,Java,是否有一个简单的Java OutputStream模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后重命名它,开始一个新的文件,等等。我想在从头开始写之前,我会问一下。在普通java中没有类似的东西。一旦你打开了一个文件句柄,它就打开了——这取决于你是否关闭它:)我还没有看到类似的东西,但你可能可以将Apache Commons IO子类化来完成它。有一个提供旋转文件输出流的。它的用法非常简单: RotationConfig config

是否有一个简单的Java OutputStream模仿类似于log4j RollingFileAppender的功能?基本上,它会写入一个最大大小的文件,然后重命名它,开始一个新的文件,等等。我想在从头开始写之前,我会问一下。

在普通java中没有类似的东西。一旦你打开了一个文件句柄,它就打开了——这取决于你是否关闭它:)

我还没有看到类似的东西,但你可能可以将Apache Commons IO子类化来完成它。

有一个提供旋转文件输出流的
。它的用法非常简单:

RotationConfig config = RotationConfig
        .builder()
        .file("/tmp/app.log")
        .filePattern("/tmp/app-%d{yyyyMMdd-HHmmss.SSS}.log")
        .policy(new SizeBasedRotationPolicy(5000 /* 5s */, 1024 * 1024 * 100 /* 100MB */))
        .policy(DailyRotationPolicy.getInstance())
        .build();

try (RotatingFileOutputStream stream = new RotatingFileOutputStream(config)) {
    stream.writer("Hello, world!".getBytes(StandardCharsets.UTF_8))
}

log4j是开源的。你能修改他们已经编写的代码吗?我研究了它,但是滚动文件追加器一点也不像流,它与其他代码部分有很多依赖关系。不过,我可能能够提取一些想法。好主意,这样可以在将流切换到新文件时将缓冲区保留在内存中。谢谢,我会试试的