перемещение файлов с обработкой ошибок в Java SE 6 - PullRequest
0 голосов
/ 24 марта 2012

Я хочу переместить какой-нибудь файл в другое место, используя Java SE 1.6

Итак, у меня есть два файла:

File srcFile, dstFile;

Когда я хочу переместить файл srcFile на место dstFile:

boolean result = srcFile.renameTo(dstFile);

Но там могут возникнуть некоторые ошибки, и результат будет ложным. В этом случае я хочу спросить пользователя, хочет ли он повторить эту операцию. Какой лучший способ сделать это? Я бы использовал здесь оператор goto, но в Java его нет.

В настоящее время я делаю это следующим образом:

boolean retry = false;
do {
    if (!srcFile.renameTo(dstFile)) {
        // TODO: Error during file replacement
        Object[] retryOptions = { "Yes", "Retry" };
        replaceFileOption = JOptionPane.showOptionDialog(frame, "There was a error durring moving file" + srcFile.getPath() + ". Skip this file?", "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
                    retryOptions, retryOptions[0]);
        if (replaceFileOption == 2) 
            retry = true;
    }
} while (retry);

Есть ли другой способ, который не будет использовать цикл while ()?

Ответы [ 2 ]

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

Когда ваша цель состояла в том, чтобы избежать лишних переменных, сделайте это так

while (!srcFile.renameTo(dstFile)) {
       Object[] retryOptions = { "Yes", "Retry" };
       if (2 != JOptionPane.showOptionDialog(frame, "There was a error durring moving file" + srcFile.getPath() + ". Skip this file?", "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
                retryOptions, retryOptions[0])) break;
}
0 голосов
/ 24 марта 2012

Вы можете поместить свой код в метод и повторно вызвать метод в случае повторной попытки.

Однако, в конце концов, вы хотите зациклить как-то, и поэтому вам придется зацикливаться любым способом.

Вы можете просто избежать определенного ключевого слова

...