2014-12-17 6 views
0

У меня есть небольшая проблема, я хочу, чтобы переместить файл с Java и попытался это следующим образом:Не удалось переместить файл

try { 
    String oFile = frame.selectedFMNGR.getPath() + "\\" + em.getFileName(); 
    String nFile = Start.safePath + "\\" + em.getFileName(); 

    System.out.println(oFile); 
    System.out.println(nFile); 
    File afile =new File(oFile); 

    if(afile.renameTo(new File(nFile))){ 
     System.out.println("File is moved successful!"); 
    } else { 
     System.out.println("Moving failed!"); 
    } 
} catch(Exception ex){ 
    ex.printStackTrace(); 
} 

но мой журнал всегда возвращается, что это не удалось:

C : \ почта \ B_Testmail1.eml

C: \ Safe \ B_Testmail1.eml

Moving не удалось!

Что здесь не так?

Редактировать: Я не хочу использовать внешние библиотеки, такие как apache commons. Я знаю, что было бы намного проще.

+1

Имеет ли целевой файл уже существующий файл? Вы пишете файл, не закрывая его? В обоих случаях переименование произойдет в Windows. –

+0

Вы проверили, что файл еще не существует в новом пути? – scrappedcola

ответ

3

Попробуйте java.nio.file; по крайней мере, это не удастся, вы поймете, почему:

final Path src = Paths.get(frame.selectedFMNGR.getPath(), em.getFileName()); 
final Path dst = Paths.get(Start.safePath, em.getFileName()); 

Files.move(src, dst); 
+0

Это мне помогло. Ошибка на самом деле показывает, что я все еще открываю файл. –

+0

Пока вы на нем, используйте новый API везде;) В ближайшее время вы не вернетесь в «Файл» – fge

+0

Я посмотрю на него. Я действительно новичок в Java, забыл о буферизованном читателе. Основная проблема, когда вы работаете с годами с C++ и raii \: D/ –

0

В коде отсутствует никакая ошибка или исключение.

Убедитесь, что в исходном каталоге есть файл, который вы хотите переместить из одного места в другое. то есть

C:\mails\B_Testmail1.eml 
Смежные вопросы