Я верю этому ответу aioobe и Джону. Как предполагает Джон, внешняя программа, запускаемая пакетным файлом, порождает процесс, который, кажется, выполняется некоторое время (50-300 миллисекунд) после того, как подпроцесс Java, выполняющий пакетный файл, вернулся. Я решил проблему, введя паузу (как предложено aioobe):
int exitValue = pr.waitFor ();
try {Thread.currentThread (). Sleep (300);} catch (InterruptedException e) {e.printStackTrace ();}
После паузы Java, похоже, может видеть файлы, созданные внешней программой. Еще раз спасибо обоим авторам, которые помогли мне решить эту проблему!
Если кто-нибудь найдет более элегантное решение, пожалуйста, не стесняйтесь писать.