Java - Как оптимизировать этот компонент записи файлов в шаблоне Reader / Processor / Writer - PullRequest
0 голосов
/ 17 мая 2018

У меня есть класс, который является компонентом процессора ETL считывателя / процессора / записи.

Он получает потоковую работу, по одной обертке за раз, и он должен записывать в файл.Тем не менее, я думаю, что существует проблема с записью в файл, так как я вижу, как размер файла медленно увеличивается 3 Кб за раз, тогда как я знаю, что класс процесса вызывается гораздо чаще, чем этот.Могу ли я реализовать здесь какую-то очередь блокировки, чтобы дождаться появления дополнительных оболочек, прежде чем записывать их в файл?

public class RiskToFsProcessor extends Processor<> {
/**
 * Default implementation
 */
@Override
protected List<Object> process(Object wrapper) {
    FileUtils.writeLinesToFile(wrapper);
    return null;
}

writeLinesToFile (добавляется в файл каждый раз без создания нового файла):

public static void writeLinesToFile(String fileName, String[] lines) {
    try {
        // create dir if not exist
        File file = new File(fileName);
        file.getParentFile().mkdirs();

        PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName, true)));
        for (String line : lines) {
            writer.println(line.trim());
        }
        writer.close();
        LOG.debug("Write to {} finished.", fileName);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
...