Я нахожусь в центре автоматизации серии действий, которые мы делаем много, чтобы получить некоторое время. Это включает в себя перемещение файлов и запуск нескольких партий.Java 7 ATOMIC_MOVE дает исключения
В этой конкретной ситуации я пытаюсь скопировать файл из одного места в другое. Все работает нормально, пока я не попытаюсь использовать параметр копирования ATOMIC_MOVE. Это мой код:
private void copyToDropFolder(Datafile datafile, String company) throws IOException{
Path datafilePath = datafile.getDataPath();
String dropFolder = locations.getLocationFor("default");
Path dropPath = Paths.get(dropFolder, company.toUpperCase(),locations.getLocationFor("drop"), datafile.getFileName());
Files.copy(datafilePath, dropPath, StandardCopyOption.ATOMIC_MOVE);
}
Я проверил и решил местоположение путь_файла_данного и dropPath, они оба действительны. Я попытался с двумя другими стандартными вариантами копирования, и программа работает нормально. Только для ATOMIC_MOVE я получаю исключение UnsupportedOperationException. Дело не в том, что мне абсолютно нужен этот конкретный вариант, но мне любопытно, почему я не буду работать. Я не могу найти другие отчеты по этой проблеме. Я делаю это на машине с Windows 7.
Я что-то упустил? Или ATOMIC_MOVE просто не поддерживается?
Почему вы пытаетесь выполнить операцию 'ATOMIC_MOVE' _copy_? Это не имеет смысла. Или вы хотите использовать 'link()'? – fge
Какой тип файловой системы вы пытаетесь включить? Возможно, операция не поддерживается (http://docs.oracle.com/javase/tutorial/essential/io/move.html) –
@fge Вы правы ... когда вы смотрите на это таким образом, это не имеет смысла. Но наличие опции ATOMIC_MOVE в перечислении, называемом StandardCopyOption, не имеет особого смысла: /. Вы указываете, что это красиво, я так не думал об этом. На данный момент, я действительно не хочу использовать его, я просто попробовал, и он терпит неудачу. Я озадачен, почему он потерпит неудачу. – anothernoc