Wie verschieben Sie eine Datei von einem Ort an einen anderen? Wenn ich mein Programm starte, wird jede an diesem Ort erstellte Datei automatisch an den angegebenen Ort verschoben. Woher weiß ich, welche Datei verschoben wird?
Danke im Voraus!
myFile.renameTo(new File("/the/new/place/newName.file"));
Datei # renameTo macht das (es kann nicht nur umbenannt werden, sondern kann auch zwischen Verzeichnissen verschoben werden, zumindest im selben Dateisystem).
Benennt die mit diesem abstrakten Pfadnamen gekennzeichnete Datei um.
Viele Aspekte des Verhaltens dieser Methode sind naturgemäß plattformabhängig: Die Umbenennungsoperation kann eine Datei möglicherweise nicht von einem Dateisystem in ein anderes verschieben, sie ist möglicherweise nicht atomar und schlägt möglicherweise fehl, wenn eine Datei mit dem abstrakten Zielpfadnamen vorhanden ist ist bereits vorhanden. Der Rückgabewert sollte immer überprüft werden, um sicherzustellen, dass der Umbenennungsvorgang erfolgreich war.
Wenn Sie eine umfassendere Lösung benötigen (z. B. die Datei zwischen den Datenträgern verschieben möchten), lesen Sie Apache Commons FileUtils # moveFile .
Mit Java 7 oder neuer können Sie Files.move(from, to, CopyOption... options)
verwenden.
Z.B.
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
Weitere Informationen finden Sie in der Dokumentation zu Files
Um eine Datei zu verschieben, können Sie auch Jakarta Commons IOs FileUtils.moveFile verwenden.
Bei einem Fehler wird eine IOException
ausgegeben. Wenn keine Ausnahme ausgelöst wird, wissen Sie, dass die Datei verschoben wurde.
Füge einfach die Quell- und Zielordnerpfade hinzu.
Alle Dateien und Ordner werden aus dem Quellordner in den Zielordner __. Verschoben.
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");
}
File.renameTo
aus Java IO kann zum Verschieben einer Datei in Java verwendet werden. Siehe auch diese SO Frage .
Java 6
public boolean moveFile(String sourcePath, String targetPath) {
File fileToMove = new File(sourcePath);
return fileToMove.renameTo(new File(targetPath));
}
Java 7 (mit 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;
}
Sie können ein externes Tool für diese Aufgabe ausführen (wie copy
in Windows-Umgebungen). Um den Code jedoch tragbar zu halten, gilt Folgendes:
File#renameTo
funktioniert, solange sich Quell- und Zielspeicherort auf demselben Volume befinden. Ich persönlich würde es vermeiden, Dateien in andere Ordner zu verschieben.
Versuche dies :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
Files.move(source, target, REPLACE_EXISTING);
Sie können das Objekt Files
verwenden
Lesen Sie mehr über Files
Schrieb diese Methode, um genau dies in meinem eigenen Projekt nur mit der Ersetzungsdatei zu tun, wenn eine vorhandene Logik darin enthalten ist.
// 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;
}
}