我正在创建一个与此类似的服务:
interface MyLogger
{
void logStuff( int id, String message );
}
该实现基本上打开一个文件并缓存 BufferedWriter 的实例 在类里。该方法已同步。
可以通过 BufferedWriter 以长久的方式打开文件包装吗?
logStuff 的简单实现。
public void logStuff(...)
{
try
{
this.writer.write( message );
this.writer.flush();
}
catch( IOException ignored ) {}
}
最佳答案
是的,没关系,您只需要注意,当您的服务打开日志文件时,其他进程/线程可能无法打开该日志文件进行写入。我认为其他进程仍然可以以只读方式打开它,尽管我不知道这是否与系统相关。
如果其他线程/进程确实需要能够写入与服务写入混合的文件,您可以执行诸如在 MyLogger 实例中缓存日志行之类的操作;然后,一旦你有,比如说,100,以追加模式打开文件,将它们写出来,然后关闭文件。不过,这并不是一件特别优雅的事情。
关于java - 在类中保存 BufferedWriter 实例。任何问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514398/