У меня есть класс, который является компонентом процессора 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();
}
}