Bagaimana Anda memindahkan file dari satu lokasi ke lokasi lain? Ketika saya menjalankan program saya, file apa pun yang dibuat di lokasi itu secara otomatis berpindah ke lokasi yang ditentukan. Bagaimana saya tahu file mana yang dipindahkan?
95
Jawaban:
myFile.renameTo(new File("/the/new/place/newName.file"));
File # renameTo melakukan itu (tidak hanya dapat mengganti nama, tetapi juga berpindah antar direktori, setidaknya pada sistem file yang sama).
Jika Anda memerlukan solusi yang lebih komprehensif (seperti ingin memindahkan file antar disk), lihat Apache Commons FileUtils # moveFile
sumber
myFile
tidak diperbarui dengan perintah ini. Jadi itu akan menunjuk ke file yang sudah tidak ada lagi.Dengan Java 7 atau yang lebih baru, Anda dapat menggunakan
Files.move(from, to, CopyOption... options)
.Misalnya
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
Lihat dokumentasi File untuk lebih jelasnya
sumber
Untuk memindahkan file, Anda juga dapat menggunakan Jakarta Commons IOs FileUtils.moveFile
Pada kesalahan itu melempar
IOException
, jadi ketika tidak ada pengecualian yang dilemparkan Anda tahu bahwa file tersebut telah dipindahkan.sumber
File.renameTo
dari Java IO dapat digunakan untuk memindahkan file di Java. Lihat juga pertanyaan SO ini .sumber
Cukup tambahkan jalur folder sumber dan tujuan.
Ini akan memindahkan semua file dan folder dari folder sumber ke folder tujuan.
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"); }
sumber
Jawa 6
public boolean moveFile(String sourcePath, String targetPath) { File fileToMove = new File(sourcePath); return fileToMove.renameTo(new File(targetPath)); }
Java 7 (Menggunakan 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; }
sumber
Anda dapat menjalankan alat eksternal untuk tugas itu (seperti
copy
di lingkungan windows) tetapi, untuk menjaga agar kode tetap portabel, pendekatan umumnya adalah:File#renameTo
akan berfungsi selama sumber dan lokasi target memiliki volume yang sama. Secara pribadi saya akan menghindari menggunakannya untuk memindahkan file ke folder yang berbeda.sumber
Coba ini :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
sumber
Anda bisa menggunakan
Files
benda itusumber
Saya menulis metode ini untuk melakukan hal ini pada proyek saya sendiri hanya dengan mengganti file jika ada logika di dalamnya.
// 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; } }
sumber
Silakan coba ini.
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; }
sumber
close
instruksi berada dalam satufinally
blok, atau jika itu menggunakan blok coba-dengan-sumber daya.Anda dapat mencoba ini .. solusi bersih
sumber
javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: REPLACE_EXISTING