Сохранение экземпляра BufferedWriter в классе. Любые проблемы? - PullRequest
1 голос
/ 05 февраля 2009

Я создаю сервис, который выглядит примерно так:

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 ) {}
}

1 Ответ

2 голосов
/ 05 февраля 2009

Да, все в порядке, вам просто нужно знать, что другие процессы / потоки могут не иметь возможности открывать файл журнала для записи, пока он открыт в вашей службе. Я думаю, что другие процессы все еще могут открывать его только для чтения, хотя я не знаю, зависит ли это от системы.

Если другие потоки / процессы должны иметь возможность записи в файл, смешанный с записями вашей службы, вы можете сделать что-то вроде кэширования строк журнала в экземпляре MyLogger; затем, если у вас есть, скажем, 100, откройте файл в режиме добавления, запишите его и закройте файл. Это не особенно элегантная вещь, чтобы сделать все же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...