Подтвердить что ты не робот

Как отменить Files.copy() в Java?

Я использую Java NIO для копирования:

Files.copy(source, target);

Но я хочу дать пользователям возможность отменить это (например, если файл слишком большой, и он занимает некоторое время).

Как мне это сделать?

4b9b3361

Ответ 1

Используйте опцию ExtendedCopyOption.INTERRUPTIBLE.

Примечание: Этот класс не может быть общедоступным во всех средах.

В принципе, вы вызываете Files.copy(...) в новый поток, а затем прерываете этот поток с помощью Thread.interrupt():

Thread worker = new Thread() {
    @Override
    public void run() {
        Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE);
    }
}
worker.start();

а затем отменить:

worker.interrupt();

Обратите внимание, что это повысит значение FileSystemException.