Text Datei individuell benennen.

T208

Neues Mitglied
Hey ich möchte gerne eine .txt Datei mit Java schreiben.
Dafür verwende ich den PrintWriter
Über eine Eingabe (mit einem Scanner) würde ich der .txt Datei gerne einen individuellen Namen geben. Kann mir dabei jemand helfen?

Mein Gedanke der nicht funktioniert schreibe ich hier noch gekürzt auf

Main
{
S= (Array mit Text)
String name = scan.next(); //z.b. text.txt
PrintWriter pw = new PrintWriter (name);
dateischreiben(s, pw);
}

dateischreiben (ArrayList<String> S, pw)
{
For (int I=0; I<s.size();I++)
{
pw.println(s.get(I));
}
wo.close
}
 
Mit PrintWriter erstellst du so übrigens noch keine Datei, damit schreibst du in einen sogenannten Stream. Dieser befindet sich erst mal nur im Speicher, ist also futsch, wenn dein Programm endet. Schau dir zum Beispiel noch FileWriter oder die Klasse File an.

Unsinn den ich da geschrieben habe, geht prinzipiell doch wie beabsichtigt.

Habe persönlich immer mit FileWriter oder der Klasse File gearbeitet.

Nichts für ungut.
 
Zuletzt bearbeitet:
Was funktioniert daran nicht? (Und in Deiner letzten "Anweisung" soll das wohl pw.close heißen?)

BTW: verwende try-with-resources.
Was funktioniert daran nicht? (Und in Deiner letzten "Anweisung" soll das wohl pw.close heißen?)

BTW: verwende try-with-resources.
Es funktioniert tatsächlich nur die Textdateien wurden mir erst nach dem Neustart angezeigt. Worauf ich nicht geachtet habe. Aber vielen Dank für die schnelle Antwort 🙂
 
Ich hab auch so schrecklich viele Textdateien... Damit etwas Ruhe einkehrt, hatte ich mir schon vor einiger Zeit folgendes System überlegt:

Java:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Locale;
import java.util.Scanner;
import java.util.zip.CRC32;

public class Rename {
    public static void renameCopy(File file, int index, String prefix) throws IOException {
        String ending = file.getName();
        ending = ending.substring(ending.lastIndexOf('.')).toLowerCase(Locale.ROOT);
        CRC32 crc32 = new CRC32();
        byte[] fileContent = Files.readAllBytes(file.toPath());
        crc32.update(fileContent);
        String crcHex = String.format("%08X", crc32.getValue());
        String name = prefix + "_" + String.format("%04d", index) + "_" + crcHex + "_" + file.lastModified() / 1000 + ending;
        System.out.println(file + " -> " + name);
        Files.createDirectories(Paths.get("neu1"));
        Files.copy(file.toPath(), Paths.get("neu1", name), StandardCopyOption.REPLACE_EXISTING);
    }

    public static void main(String[] args) throws IOException {
        System.out.println("Ordner-Pfad:");
        String fn = new Scanner(System.in).nextLine();
        File[] fa = new File(fn).listFiles((dir, name) -> name.toLowerCase().endsWith(".txt"));
        if (fa != null) {
            int index = 1;
            for (File f : fa) {
                if (f.isFile()) {
                    renameCopy(f, index++, "Text");
                }
            }
        }
    }
}

Beispiel:
...\btc.txt -> Text_0001_AA96E59A_1626585294.txt

hth
 

Neue Themen


Zurück
Oben