2011-01-10 2 views
53

мой вопрос, как переместить файл из одного места в другое. когда я запускаю свою программу, любой файл, созданный в этом месте она автоматически переместится в указанное место и как знать, какой файл перемещается? .. В JavaКак перемещать файл из одного местоположения в другое место в java?

заранее спасибо ..

ответ

66
myFile.renameTo(new File("/the/new/place/newName.file")); 

File#renameTo делает это (он может не только переименование, но и перемещаться между каталогами, по крайней мере, на одной и той же файловой системе).

Переименовывает файл, обозначенный этим абстрактным путем.

Многие аспекты поведения этого метода зависят от платформы: операция переименования может не переносить файл из одной файловой системы в другую, она может быть не атомарной, и может не получиться, если файл с абстрактный путь пути назначения уже существует. Всегда нужно проверить возвращаемое значение, чтобы убедиться, что операция переименования прошла успешно.

Если вам нужно более полное решение (например, желая, чтобы переместить файл между дисками), смотрите на Apache Commons FileUtils#moveFile

+8

myFile.renameTo (новый файл ("/ the/new/place/newname.file")); – djangofan

+3

Да, не просто укажите новый родительский каталог. И убедитесь, что путь там уже существует. – Thilo

+2

Обратите внимание, что путь к объекту 'myFile' не обновляется этой командой. Поэтому он будет указывать на файл, который больше не существует. –

2

Вы могли бы выполнить внешний инструмент для выполнения этой задачи (например, copy в окнах среды) но, чтобы сохранить код переносимым, общий подход заключается в следующем:

  1. читать исходный файл в память
  2. записать содержимое в файл на новом месте
  3. удалить исходный файл

File#renameTo будет работать до тех пор, как источник и целевое местоположение находятся на том же объеме. Лично я бы не использовал его для перемещения файлов в разные папки.

+0

Он действительно работает для перемещения в разные тома, а также ... – BullyWiiPlaza

+0

@BullyWiiPlaza: прочитайте большой отказ от ответственности в ответе Тило. На некоторых платформах (например, Windows) он разбит многими способами. – AndrewBourgeois

4

Чтобы переместить файл, который вы могли бы также использовать Jakarta Commons МО FileUtils.moveFile

В случае ошибки он бросает IOException, поэтому, когда исключение не брошено вы знаете, что файл был перемещен.

35

С помощью Java 7 или новее вы можете использовать Files.move(from, to, CopyOption... options).

E.g.

Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING); 

См Files документации для получения более подробной информации

2

Просто добавьте пути к папкам источника и назначения.

Он скопирует все файлы и папку из исходной папки в папку назначения .

File destinationFolder = new File(""); 
    File sourceFolder = new File(""); 

    if (!destinationFolder.exists()) 
    { 
     destinationFolder.mkdirs(); 
    } 

    // Check weather source exists and it is folder. 
    if (sourceFolder.exists() && sourceFolder.isDirectory()) 
    { 
     // Get list of the files and iterate over them 
     File[] listOfFiles = sourceFolder.listFiles(); 

     if (listOfFiles != null) 
     { 
      for (File child : listOfFiles) 
      { 
       // Move files to destination folder 
       child.renameTo(new File(destinationFolder + "\\" + child.getName())); 
      } 

      // Add if you want to delete the source folder 
      sourceFolder.delete(); 
     } 
    } 
    else 
    { 
     System.out.println(sourceFolder + " Folder does not exists"); 
    } 
+0

работает для меня. благодаря – Omore

1

Попробуйте это: -

boolean success = file.renameTo(new File(Destdir, file.getName())); 
0
Files.move(source, target, REPLACE_EXISTING); 

Вы можете использовать Files объект

Подробнее о Files

0

писал это метод сделать это самому в моем собственном проекте только с заменяющим файлом, если в нем есть существующая логика.

// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation 
private boolean moveFileToDirectory(File sourceFile, String targetPath) { 
    File tDir = new File(targetPath); 
    if (tDir.exists()) { 
     String newFilePath = targetPath+File.separator+sourceFile.getName(); 
     File movedFile = new File(newFilePath); 
     if (movedFile.exists()) 
      movedFile.delete(); 
     return sourceFile.renameTo(new File(newFilePath)); 
    } else { 
     LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist"); 
     return false; 
    }  
} 
Смежные вопросы