задержка обработки в Java-приложении - PullRequest
0 голосов
/ 27 марта 2012

Может кто-нибудь, пожалуйста, помогите мне. У меня есть приложение, которое создает файл для обработки внешним приложением. Мне нужно как-то отложить мой код, чтобы ждать, пока не будет создан файл из внешнего приложения. Но у меня возникают проблемы с поиском чего-либо, что вызывает задержку в Java.

Заранее спасибо

Ответы [ 5 ]

1 голос
/ 27 марта 2012

Согласно комментарию, простой, но сырой:

File f = new File("your-file.txt");

for (;;)
{
    try
    {
        if (f.isFile())
        {
            break;
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
        // Or some other appropriate
        // handling of the exception.
    }

    try
    {
        Thread.currentThread().sleep(1000);
    }
    catch (InterruptedException e)
    {
        Thread.currentThread().interrupt();
    }
}
1 голос
/ 27 марта 2012

Довольно элементарно и грубо, но технически, Thread.sleep() вызывает задержку.

0 голосов
/ 05 июля 2013

Вместо того, чтобы опрашивать изменение файла с помощью таймера, вы можете просто использовать API файлов Java и ждать события изменения файла. Вот документы: http://docs.oracle.com/javase/tutorial/essential/io/notification.html

и вот небольшой пример: http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java

0 голосов
/ 27 марта 2012

задерживает мой код для ожидания, пока не будет создан файл

Лучше активировать методы в вашем коде, когда что-то происходит. Для этого я бы предложил отдельный Thread, который запускается и проверяет условие, а затем вызывает ваши приложения. метод, если это необходимо. Для приложения. с графическим интерфейсом это обычно достигается с помощью Swing Timer, но я считаю, что это также может быть достигнуто с помощью java.util.Timer.

0 голосов
/ 27 марта 2012

можно попробовать

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