Программа, в которой мы ошиблись при попытке переместить файлы из одного каталога в другой. После долгой отладки я обнаружил ошибку, написав небольшую утилиту, которая просто перемещает файл из одного каталога в другой (код ниже). Оказывается, при перемещении файлов в локальной файловой системе все работает нормально, а попытка переместить файл в другую файловую систему не удалась.
Почему это? Вопрос может быть специфичным для платформы — мы используем Linux на ext3, если это имеет значение.
И второй вопрос; должен ли я использовать что-то еще, кроме метода renameTo()
класса File
? Кажется, что это работает только в локальных файловых системах.
Тесты (запуск от имени пользователя root):
touch /tmp/test/afile
java FileMover /tmp/test/afile /root/
The file move was successful
touch /tmp/test/afile
java FileMover /tmp/test/afile /some_other_disk/
The file move was erroneous
Код:
import java.io.File;
public class FileMover {
public static void main(String arguments[] ) throws Exception {
boolean success;
File file = new File(arguments[0]);
File destinationDir = new File(arguments[1]);
File destinationFile = new File(destinationDir,file.getName() );
success = file.renameTo(destinationFile);
System.out.println("The file move was " + (success?"successful":"erroneous"));
}
}