File beim Kopieren in einen anderen Ordner umbenennen

Lia

Bekanntes Mitglied
Hi liebes Forum,

ich versuche eine Datei test.xlsx in einen Ordner "Archiv" zu kopieren und dann den Namen in "testold.xlsx" umzubenennen. Das funktioniert soweit.

Ich habe den String "testold.xlsx" in einer Stringvariable hinterlegt.

Das Problem ist, dass ich es nicht während des Kopiervorganges nicht hinbekomme.
Um die File mit "copyFileToDirectoy" in meinem Fall das Archiv erwartet ja einen Typ File und keinen String.

Kann mir jemand vielleicht einen Tip geben wie ich, die Datei mit dem neuen Namen in das Archiv kopieren kann?

Lieben Dank !
 
Hallo Lia,
so sollte es funktionieren:
Java:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import javax.swing.JFileChooser;

/**
 * @author Your Name <your.name at your.org>
 */
public class ZipUnzip {

    void copy() throws IOException {
        JFileChooser fc = new JFileChooser();
        if (fc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
            return;
        }
        File src = fc.getSelectedFile();
        System.out.println("Der Dateiname lautet: " + src.getName());
        if (!src.isFile() || !src.canRead()) {
            return;
        }
        if (fc.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) {
            return;
        }
        File dst = fc.getSelectedFile();
        System.out.println("Der Dateiname lautet: " + dst.getName());
        if (src.equals(dst)) {
            return;
        }
        System.out.println("Ich kopiere " + src + " nach " + dst);
        try {
            Files.copy(src.toPath(), dst.toPath(), StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException ioe) {
            System.out.println(ioe.toString());
            throw ioe;
        }
        System.out.println("Fertig");
    }

    @SuppressWarnings("unused")
    void zipUnzip() {
        // TODO 1 a
        throw new UnsupportedOperationException();
    }

    public static void main(String[] args) throws IOException {
        ZipUnzip zipUnzip = new ZipUnzip();
        zipUnzip.copy();
    }

}


wie ich, die Datei mit dem neuen Namen in das Archiv kopieren kann
Für alles, was mit Zips zu tun hat: https://www.baeldung.com/java-compress-and-uncompress .

Ich hoffe ich konnte Dir ein bisschen helfen und wünsche noch schönen Abend!
 
Vielen Vielen Dank für deine ausführliche Antwort!! 🙂 sehr lieb.

Ich habe den neuen File Namen in meinem Fall "testold.xlsx" in einer String Variable gespeichert. Also den Namen den ich der File geben will, die und Archive kommen soll. Nur irgendwie weiss ich nicht wie ich das mit der Datei zusammenbringen soll

String Filename = file.getname();
(Hier tue ich dann noch mit "lastindexof") das "old" an Test einfügen
Und dann String newFilename = (der neue Name "testold")

Jetzt weiss ich bei dem Kopiervorgang nicht genau wie ich das machen soll das er diesen Namen nimmt . Weil FileUtils.movefileToDorectory erwartet (File, File,Boolean)

@mihe7

danke 🙂
 
Hier mal was zum Spielen. Wenn Du den Kommentar der auskommentierte Zeile entfernst, wird die Datei verschoben, sonst wird nur angezeigt, was passieren würde.

Java:
import java.io.File;
import java.io.IOException;

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

public class Test {
    private final Path archive;
    private final String infix;

    public Test(String archive, String infix) {
        this.archive = Paths.get(archive);
        this.infix = infix;
    }

    void moveToArchive(File source) throws IOException {
        Path sourcePath = source.toPath();
        Path dest = getArchivedFile(sourcePath);
        System.out.println("Move " + sourcePath.toString() + " to " + dest.toString());
//        Files.move(sourcePath, dst);
    }

    Path getArchivedFile(Path file) {
        String sourceName = file.getFileName().toString();
        String extension ="";
        int ix = sourceName.lastIndexOf('.');
        if (ix != -1) {
            extension = sourceName.substring(ix);
            sourceName = sourceName.substring(0, ix);
        }
        return archive.resolve(sourceName + infix + extension);
    }

    public static void main(String[] args) throws IOException {
        Test test = new Test("/home/archive", "_old");
        test.moveToArchive(new File("/home/cur/test.txt"));
    }
}
 
Und, blöde Frage 🙁, welche Erfahrungen konntest du sammeln, oder hat's geklappt, mit den Zips?
 

Zurück
Oben