Как переместить файл из одного места в другое? Когда я запускаю свою программу, любой файл, созданный в этом месте, автоматически перемещается в указанное место. Как узнать, какой файл перемещен?
Как переместить файл из одного места в другое? Когда я запускаю свою программу, любой файл, созданный в этом месте, автоматически перемещается в указанное место. Как узнать, какой файл перемещен?
Ответы:
myFile.renameTo(new File("/the/new/place/newName.file"));
Это делает файл # renameTo (он может не только переименовывать, но и перемещаться между каталогами, по крайней мере, в одной файловой системе).
Переименовывает файл, обозначенный этим абстрактным путем.
Многие аспекты поведения этого метода по своей сути зависят от платформы: операция переименования может не иметь возможности переместить файл из одной файловой системы в другую, она может быть не атомарной и может не завершиться успешно, если файл с конечным абстрактным путем уже существует. Возвращаемое значение всегда следует проверять, чтобы убедиться, что операция переименования прошла успешно.
Если вам нужно более комплексное решение (например, вы хотите переместить файл между дисками), посмотрите Apache Commons FileUtils # moveFile
myFile
путь к объекту не обновляется этой командой. Таким образом, он будет указывать на файл, которого больше нет.
С Java 7 или новее вы можете использовать Files.move(from, to, CopyOption... options)
.
Например
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
См. Документацию по файлам для более подробной информации.
Чтобы переместить файл, вы также можете использовать Jakarta Commons IOs IOs FileUtils.moveFile
При ошибке он выдает IOException
, поэтому, когда исключение не возникает, вы знаете, что файл был перемещен.
File.renameTo
from Java IO можно использовать для перемещения файла в Java. Также см. Этот вопрос SO .
Просто добавьте пути к исходной и целевой папкам.
Он переместит все файлы и папки из исходной папки в целевую.
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");
}
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 fileMoved = true;
try {
Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
fileMoved = false;
e.printStackTrace();
}
return fileMoved;
}
Вы можете выполнить внешний инструмент для этой задачи (например, copy
в среде Windows), но для сохранения переносимости кода общий подход заключается в следующем:
File#renameTo
будет работать, пока исходное и целевое расположение находятся на одном томе. Лично я бы не стал использовать его для перемещения файлов в разные папки.
Попробуй это :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
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;
}
}
Пожалуйста, попробуйте это.
private boolean filemovetoanotherfolder(String sourcefolder, String destinationfolder, String filename) {
boolean ismove = false;
InputStream inStream = null;
OutputStream outStream = null;
try {
File afile = new File(sourcefolder + filename);
File bfile = new File(destinationfolder + filename);
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024 * 4];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
// delete the original file
afile.delete();
ismove = true;
System.out.println("File is copied successful!");
} catch (IOException e) {
e.printStackTrace();
}finally{
inStream.close();
outStream.close();
}
return ismove;
}
close
инструкции были в finally
блоке или если бы он использовал блок try-with-resources.
Вы можете попробовать это .. чистое решение
Files.move(source, target, REPLACE_EXISTING);
javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: REPLACE_EXISTING