webentwicklung-frage-antwort-db.com.de

Wie verschiebe ich eine Datei in Java von einem Ort an einen anderen?

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!

70
pmad
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 .

99
Thilo

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

55
micha

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.

5
DerMike

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");
    }
4
manjeet lama

File.renameTo aus Java IO kann zum Verschieben einer Datei in Java verwendet werden. Siehe auch diese SO Frage .

4
Piotr

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;
}
2
Pranav V R

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:

  1. lesen Sie die Quelldatei in den Speicher
  2. schreiben Sie den Inhalt in eine Datei am neuen Speicherort
  3. löschen Sie die Quelldatei

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.

2
Andreas_D

Versuche dies :-

  boolean success = file.renameTo(new File(Destdir, file.getName()));
2
Vijay Gupta
Files.move(source, target, REPLACE_EXISTING);

Sie können das Objekt Files verwenden

Lesen Sie mehr über Files

1
Daniel Taub

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;
    }       
}
0
Joel M