У меня есть строка, которая записывает строку в файл, используя apache commons io :
FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8", false);
Я считаю, что выполнение продолжается даже до того, как файл будет полностью записан.
Я не хочу, чтобы выполнение продолжалось, пока этот файл не будет записан. Есть ли способ сделать это?
UPDATE
Как это?
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class WriteFile implements Runnable {
private CountDownLatch latch;
public WriteFile(CountDownLatch latch) {
this.latch = latch;
}
public void run() {
System.out.println("Started.");
// Do something - in this case write to file
FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8", false);
latch.countDown();
}
Тогда в родительском коде:
CountDownLatch latch = new CountDownLatch(1);
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(new WriteFile(latch));
try {
latch.await(); // wait until latch counted down to 0
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Completed.");