webentwicklung-frage-antwort-db.com.de

Benennen Sie eine Datei mit Java um

Können wir eine Datei umbenennen, sagen Sie test.txt in test1.txt?

Wenn test1.txt existiert, wird es umbenannt? 

Wie benenne ich es in die bereits vorhandene Datei test1.txt um, damit der neue Inhalt von test.txt zur späteren Verwendung hinzugefügt wird?

148
Shekhar

Kopiert von http://exampledepot.8waytrips.com/egs/Java.io/RenameFile.html

// File (or directory) with old name
File file = new File("oldname");

// File (or directory) with new name
File file2 = new File("newname");

if (file2.exists())
   throw new Java.io.IOException("file exists");

// Rename file (or directory)
boolean success = file.renameTo(file2);

if (!success) {
   // File was not successfully renamed
}

An die neue Datei anhängen:

Java.io.FileWriter out= new Java.io.FileWriter(file2, true /*append=yes*/);
156
Pierre

Zusamenfassend:

Files.move(source, source.resolveSibling("newname"));

Mehr Details:

import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;

Folgendes wird direkt von http://docs.Oracle.com/javase/7/docs/api/index.html kopiert:

Angenommen, wir möchten eine Datei in "newname" umbenennen, wobei die Datei im gleichen Verzeichnis bleibt:

Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));

Angenommen, wir möchten eine Datei in ein neues Verzeichnis verschieben, den gleichen Dateinamen beibehalten und eine vorhandene Datei dieses Namens im Verzeichnis ersetzen:

Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
76
kr37

Sie möchten die renameTo - Methode für ein File - Objekt verwenden.

Erstellen Sie zunächst ein File-Objekt, um das Ziel darzustellen. Überprüfen Sie, ob diese Datei vorhanden ist. Ist dies nicht der Fall, erstellen Sie ein neues Dateiobjekt für die zu verschiebende Datei. Rufen Sie die Methode renameTo für die zu verschiebende Datei auf und überprüfen Sie den von renameTo zurückgegebenen Wert, um zu sehen, ob der Aufruf erfolgreich war.

Wenn Sie den Inhalt einer Datei an eine andere anhängen möchten, stehen mehrere Schreiber zur Verfügung. Basierend auf der Erweiterung klingt das nach einfachem Text. Ich würde mir also den FileWriter anschauen.

27
Thomas Owens

Für Java 1.6 und niedriger glaube ich, dass die sicherste und sauberste API dafür Guavas Files.move ist.

Beispiel:

File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());

Die erste Zeile stellt sicher, dass der Speicherort der neuen Datei das gleiche Verzeichnis ist, d. H. Das übergeordnetes Verzeichnis der alten Datei.

EDIT: Ich habe dies geschrieben, bevor ich mit Java 7 angefangen habe, wodurch ein sehr ähnlicher Ansatz eingeführt wurde. Wenn Sie also Java 7+ verwenden, sollten Sie die Antwort von kr37 sehen und bestätigen.

24
Zoltán

Umbenennen der Datei durch Verschieben in einen neuen Namen. (FileUtils stammt aus Apache Commons IO lib)

  String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName;
  File newFile = new File(newFilePath);

  try {
    FileUtils.moveFile(oldFile, newFile);
  } catch (IOException e) {
    e.printStackTrace();
  }
17
Branflake2267

Dies ist eine einfache Möglichkeit, eine Datei umzubenennen:

        File oldfile =new File("test.txt");
        File newfile =new File("test1.txt");

        if(oldfile.renameTo(newfile)){
            System.out.println("File renamed");
        }else{
            System.out.println("Sorry! the file can't be renamed");
        }
12
senior
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;
import static Java.nio.file.StandardCopyOption.*;

Path yourFile = Paths.get("path_to_your_file\text.txt");

Files.move(yourFile, yourFile.resolveSibling("text1.txt"));

So ersetzen Sie eine vorhandene Datei mit dem Namen "text1.txt": 

Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);
3
Kirill Ch

Wenn Sie nur die Datei umbenennen, können Sie File.renameTo () verwenden.

Wenn Sie den Inhalt der zweiten Datei an die erste anhängen möchten, lesen Sie FileOutputStream mit der Append-Konstruktor-Option oder Dasselbe für FileWriter . Sie müssen den Inhalt der Datei lesen, um sie anzufügen und mit dem Ausgabestrom/-schreiber ausschreiben.

3
Dan Vinton

Versuche dies

File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult

Hinweis: Wir sollten immer den Rückgabewert von renameTo überprüfen, um sicherzustellen, dass die Umbenennungsdatei erfolgreich ist, da sie plattformabhängig ist (anderes Betriebssystem, anderes Dateisystem) und keine IO -Ausnahme auslöst, wenn Umbenennen schlägt fehl.

3
anoopknr

Soweit ich weiß, hängt das Umbenennen einer Datei nicht an den Inhalt einer vorhandenen Datei mit dem Zielnamen an.

Informationen zum Umbenennen einer Datei in Java finden Sie in der documentation für die renameTo()-Methode in der Klasse File.

2
Yuval

Ja, Sie können File.renameTo () verwenden. Denken Sie jedoch daran, den richtigen Pfad zu haben, wenn Sie ihn in eine neue Datei umbenennen.

import Java.util.Arrays;
import Java.util.List;

public class FileRenameUtility {
public static void main(String[] a) {
    System.out.println("FileRenameUtility");
    FileRenameUtility renameUtility = new FileRenameUtility();
    renameUtility.fileRename("c:/Temp");
}

private void fileRename(String folder){
    File file = new File(folder);
    System.out.println("Reading this "+file.toString());
    if(file.isDirectory()){
        File[] files = file.listFiles();
        List<File> filelist = Arrays.asList(files);
        filelist.forEach(f->{
           if(!f.isDirectory() && f.getName().startsWith("Old")){
               System.out.println(f.getAbsolutePath());
               String newName = f.getAbsolutePath().replace("Old","New");
               boolean isRenamed = f.renameTo(new File(newName));
               if(isRenamed)
                   System.out.println(String.format("Renamed this file %s to  %s",f.getName(),newName));
               else
                   System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
           }
        });

    }
}

}

1
V1ma-8

Hier ist mein Code, um mehrere Dateien in einem Ordner erfolgreich umzubenennen:

public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
    if(newName == null || newName.equals("")) {
        System.out.println("New name cannot be null or empty");
        return;
    }
    if(extension == null || extension.equals("")) {
        System.out.println("Extension cannot be null or empty");
        return;
    }

    File dir = new File(folderPath);

    int i = 1;
    if (dir.isDirectory()) { // make sure it's a directory
        for (final File f : dir.listFiles()) {
            try {
                File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);

                if(f.renameTo(newfile)){
                    System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
                } else {
                    System.out.println("Rename failed");
                }
                i++;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

und führe es für ein Beispiel aus:

renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");
1
Tạ Anh Tú
Files.move(file.toPath(), fileNew.toPath()); 

funktioniert, aber nur, wenn Sie ALLE verwendeten Ressourcen schließen (oder automatisch schließen) (InputStream, FileOutputStream usw.). Ich denke, dasselbe mit file.renameTo oder FileUtils.moveFile.