Як перемістити файл з одного місця в інше? Коли я запускаю програму, будь-який файл, створений у цьому місці, автоматично переміщується у вказане місце. Як дізнатися, який файл переміщено?
Як перемістити файл з одного місця в інше? Коли я запускаю програму, будь-який файл, створений у цьому місці, автоматично переміщується у вказане місце. Як дізнатися, який файл переміщено?
Відповіді:
myFile.renameTo(new File("/the/new/place/newName.file"));
Файл # перейменуватиЦе робить це (він може не тільки перейменовувати, але й переміщувати між каталогами, принаймні в тій же файловій системі).
Перейменовує файл, позначений цією абстрактною назвою шляху.
Багато аспектів поведінки цього методу за своєю суттю залежать від платформи: Операція перейменування, можливо, не зможе перемістити файл з однієї файлової системи в іншу, вона може бути не атомною, і це не вдасться, якщо файл із цільовим абстрактним іменем шляху вже існує. Повернене значення завжди слід перевіряти, щоб переконатись, що операція перейменування була успішною.
Якщо вам потрібно більш комплексне рішення (наприклад, бажання перемістити файл між дисками), подивіться на 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 FileUtils.moveFile
При помилці він видає IOException
, тому, коли не виникає жодного винятку, ви знаєте, що файл переміщено.
File.renameTo
з 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