Java - метод renameTo не работает - PullRequest
       13

Java - метод renameTo не работает

2 голосов
/ 15 августа 2010

Я пытаюсь использовать метод renameTo в Java, но он просто возвращает false и не перемещает файл.

Я пропускаю шаг?Есть ли способ узнать, почему он не перемещает файл?Метод delete тоже ничего не делает.

Вот мой код, показывающий, как я его использую:

private void archiveOutputFile(File outputFile) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddhhmmssS");
    String timeStamp = formatter.format(new Date());
    String subFolderName = "Archive" + timeStamp;
    File subFolder = new File(outputFile.getParent(),subFolderName);
    subFolder.mkdir();
    File newFile = new File(subFolder,outputFile.getName());
    //outputFile.deleteOnExit(); //Doesn't work, nor does .delete()
    boolean success = outputFile.renameTo(newFile);
}

Вот некоторая системная информация:

Java: 1.6.0_21;Java HotSpot (TM) Client VM 17.0-b17

Система: Windows XP версии 5.1, работающая на x86;CP1252;en_US (nb)

Ответы [ 4 ]

5 голосов
/ 15 августа 2010

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

1 голос
/ 15 августа 2010

Вам необходимо создать подпапку, прежде чем перемещать в нее файл (раскомментируйте subFolder.mkdir ();)

0 голосов
/ 15 августа 2010

работает, если я прокомментирую в строке

subFolder.mkdir();
0 голосов
/ 15 августа 2010

Я бы порекомендовал вам проверить, существует ли. public boolean exists()

Подробнее здесь

...