10 ответов:
myFile.renameTo(new File("/the/new/place/newName.file"));файл#renameTo делает это (он может не только переименовывать, но и перемещаться между каталогами, по крайней мере, в одной файловой системе).
переименовывает файл, обозначенный этим абстрактным путем.
многие аспекты поведения этого метода по своей сути зависят от платформы: операция переименования может быть не в состоянии переместить файл из одной файловой системы в другую, она не может быть атомарной, и это может не сработать, если файл с абстрактный путь назначения уже существует. Возвращаемое значение всегда должно быть проверено, чтобы убедиться, что операция переименования прошла успешно.
Если вам нужно более комплексное решение (например, чтобы переместить файл между дисками), посмотрите на Apache Commons FileUtils#moveFile
С Java 7 или новее, вы можете использовать
Files.move(from, to, CopyOption... options).например.
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);посмотреть файлы документация для более подробной информации
для перемещения файла вы также можете использовать Jakarta Commons IOs FileUtils.moveFile
при ошибке он бросает
IOException, поэтому, когда не возникает никаких исключений, вы знаете, что файл был перемещен.
File.renameToиз Java IO можно использовать для перемещения файла в Java. Также смотрите это так вопрос.
просто добавьте исходные и конечные пути к папкам.
он будет перемещать все файлы и папки из исходной папки в папка назначения.
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"); }
можно выполнить внешний инструмент для этой задачи (например,
copyв средах windows), но, чтобы сохранить переносимость кода, общий подход заключается в следующем:
- читать исходный файл в
- записать содержимое в файл в новом месте
- удалить файл источник
File#renameToбудет работать до тех пор, пока исходное и целевое местоположение находятся на одном томе. Лично я бы избегал использовать его для перемещения файлов в разные папки.
Java 6
public boolean moveFile(String sourcePath, String targetPath) { File fileToMove = new File(sourcePath); return fileToMove.renameTo(new File(targetPath)); }Java 7 (С помощью NIO)
public boolean moveFile(String sourcePath, String targetPath) { boolean flag = true; try { Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING); } catch (Exception e) { flag = false; e.printStackTrace(); } return flag; }
Files.move(source, target, REPLACE_EXISTING);можно использовать
Filesобъектподробнее о файлы
написал этот метод, чтобы сделать это в моем собственном проекте только с файлом замены, если в нем есть логика.
// 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; } }
Comments