.txt Datei Zeile löschen.

IceHawk

Mitglied
Hallo,

ich versuche gerade aus eine eingelesenen .txt Datei ein Zeile zu löschen. Nach ein bisschen googlen habe ich herausgefunden, dass man dazu die Datei in eine neue Datei kopieren soll und die entsprechende Zeile auslassen soll. Daraufhin habe ich folgenden Code geschrieben:

(Die 1. 5 Zeilen stehen teilweise in Funktionen (mit try und catch) - habs jetzt hier so zusammengeschrieben. Ich gehe aber davon aus, dass die funktionieren.

Java:
File file = new File("original.txt");
File kopie = new File("kopie.txt");
Filewriter kwriter = new FileWriter(kopie, true);
FileReader freader = new FileReader(file);
BufferedReader reader = new BufferedReader(freader);

int zeile = 10;
int counter = 0;
String line;
        
while(true)
{
     try{
          line = reader.readLine();

                    if(line != null)
                    {
                        if(zeile != counter)
                        {
                            kwriter.write(line);
                            kwriter.write(System.getProperty("line.separator"));
                        }
                        counter++;
                    }
                    else 
                        break;
                } catch(IOException e){
                    e.printStackTrace();
                }
            }

Könnt ihr mir sagen was ich falsch mache? Die Datei kopie.txt bleibt immer leer.
 

IceHawk

Mitglied
ich habe nun folgendes getestet, aber auch das gibt nichts aus.

Java:
//...
if(line != null)
                    {
                        kwriter.write("HALLO");
                        kwriter.flush();
                        if(zeile != counter)
                        {
                            kwriter.write("HALLO");
                            kwriter.write(System.getProperty("line.separator"));
                            kwriter.flush();
                        }
                        counter++;
                    }
//...

Damit verläßt Du die Schleife. Dh. Du machst nur einen einzigen Durchlauf. Und wenn die Text-Datei mit einer Leerzeile anfängt wird auch nichts geschrieben.
Was wolltest Du damit erreichen?

Es wird bei jedem Durchlauf eine Zeile eingelesen. Wenn es keine Zeile mehr gibt, hat line den Wert null. So wird doch jede Zeile eingelesen (und sollte auch geschrieben werden), oder?
 

IceHawk

Mitglied
nein, da ist genügend drin. mit einer anderen methode kann ich auch in die Datei schreiben (also die datei 'file' bzw. original.txt)

Java:
//....
writer.write(System.getProperty("line.separator"));
writer.write(test + " " + test2);                // test und test2 sind Strings
writer.flush();
//...

ist halt auch wieder code drum herum.
 

IceHawk

Mitglied
und wie kann ich den dann wieder "öffnen", wenn ich die funktion erneut aufrufen möchte?

Wo muss das kwriter.close() denn hin? In den else Zweig?
 
Zuletzt bearbeitet:
T

tröööt

Gast
Damit verläßt Du die Schleife. Dh. Du machst nur einen einzigen Durchlauf. Und wenn die Text-Datei mit einer Leerzeile anfängt wird auch nichts geschrieben.
Was wolltest Du damit erreichen?

Darüber hinaus könnte ein
Code:
kwriter.flush();
helfen.

bye
TT

hä ???

Java:
if(bool)
    call1();
else
    call2();

das BREAK wird NUR aufgerufen wenn "line==null" ... da das BREAK zum "else-block" gehört ...

nur mal so als info nebenbei

@TO
den loop sollte man nicht while(true) schreiben sondern eher while((line=readLine())!=null) ... dann erübrigt sich das if() im loop
 

Spin

Top Contributor
Hallo,

deiner Herangehensweise eine Zeile in einer Datei zu löschen ist ok, aber: ;)
Wie sind die Zeilen in dem File voneinander getrennt?
Vielleicht ein Dash, ein Slash oder ein Leerzeichen, ein Punkt, ein Komma?

Einmal gegoogelt:
Remove line in File

und wie kann ich den dann wieder "öffnen", wenn ich die funktion erneut aufrufen möchte?

Wo muss das kwriter.close() denn hin? In den else Zweig?

Am besten auch einmal in den Link luschern. Man macht das gewöhnlich am ende, sobald man fertig ist. Es ist möglich dieselbe Datei nochmal zu öffnen, aber diesen Usecase habe ich noch nie gesehen. ;)
 

IceHawk

Mitglied
@Spin: Die Zeilen sind nur durch einen Zeilemumbruch getrennt.

Weiterhin habe ich die Funktion "removeLineFromFile(String file, String lineToRemove)" aus deinem Link ausprobiert, aber leider ohne Erfolg. (Der 1. Parameter ist doch dann "original.txt", oder?
 
H

hüteüberhüte

Gast
Bitteschön, kannst du gerne kopieren, wenn du willst (und noch ein paar englische Bezeichner/Namen reinknallen):

Java:
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author hütte
 */
public class ZeilenLöschen {

    public static void lösche(String alt, String neu, boolean[] zuLöschen) throws FileNotFoundException, IOException {
        File f1 = new File(alt), f2 = new File(neu);
        if (!f2.exists()) {
            f2.createNewFile();
        }
        if (f1.equals(f2) || !f1.canRead() || !f2.canWrite()) {
            throw new IllegalArgumentException();
        }

        BufferedReader in = null;
        PrintWriter out = null;
        try {
            in = new BufferedReader(new FileReader(f1));
            out = new PrintWriter(new BufferedWriter(new FileWriter(f2)));
            String s = in.readLine();
            for (int i = 0; i < zuLöschen.length && s != null; i++, s = in.readLine()) {
                if (!zuLöschen[i]) {
                    out.println(s);
                }
            }
            out.flush();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {
        String s1 = "alt.txt", s2 = "neu.txt";

        PrintWriter out = new PrintWriter(new BufferedOutputStream(new FileOutputStream(s1)));
        for (int i = 0; i < 10; i++) {
            out.printf("Hallo %d !%n", i);
        }
        out.close();

        boolean[] ba = new boolean[10];
        for (int i = 1; i < 10; i += 2) {
            ba[i] = true;
        }

        lösche(s1, s2, ba);
    }
}

try-(catch)-finally sollte auch genau so in dieser Form sein.

Es soll jede zweite Zeile beginnend bei 1 gelöscht/übersprungen werden, so dass nur noch Zeilen mit geraden Zahlen stehen.

Grüßle
 

DrZoidberg

Top Contributor
Ich hab das mal ausprobiert und es funktioniert einwandfrei
Die 11. Zeile von original.txt fehlt in kopie.txt.

Java:
import java.io.*;

public class Loeschen {
    public static void main(String[] args) {
        try {
            File file = new File("original.txt");
            File kopie = new File("kopie.txt");
            FileWriter kwriter = new FileWriter(kopie, true);
            FileReader freader = new FileReader(file);
            BufferedReader reader = new BufferedReader(freader);
             
            int zeile = 10;
            int counter = 0;
            String line;
            while((line = reader.readLine()) != null) {
                if(zeile != counter) {
                    kwriter.write(line);
                    kwriter.write(System.getProperty("line.separator"));
                }
                counter++;
            }
            reader.close();
            kwriter.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JohnMurdoch Zeile löschen aus grosser Datei ohne vollständigem Einlesen Java Basics - Anfänger-Themen 2
G datei -> zeile am anfang einfügen/löschen Java Basics - Anfänger-Themen 4
G Zeile in Datei löschen Java Basics - Anfänger-Themen 3
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
M Zeile in datei überschreiben Java Basics - Anfänger-Themen 5
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
C Input/Output Hilfe..txt Datei zeile verändern und Ausgabe ..Hilfe Java Basics - Anfänger-Themen 11
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
E Zeile innerhalb Datei überschreiben Java Basics - Anfänger-Themen 2
Developer_X jede Zeile einer Datei mit einem String verketten Java Basics - Anfänger-Themen 16
T Bestimmte Zeile aus einer .txt-Datei auslesen? Java Basics - Anfänger-Themen 10
C Nächste Zeile in einer Datei Java Basics - Anfänger-Themen 5
B Wie eine bestimmte Zeile einer Txt-Datei lesen ? Java Basics - Anfänger-Themen 5
E Zeile in Datei ersetzen Java Basics - Anfänger-Themen 2
S StringBuffer in Datei - Problem mit neuer Zeile Java Basics - Anfänger-Themen 2
L Zeile aus Datei lesen Java Basics - Anfänger-Themen 5
L Zeile in Datei schreiben Java Basics - Anfänger-Themen 2
M Zufällige Zeile aus einer Datei lesen Java Basics - Anfänger-Themen 2
B Ausgabe in bestimmte Zeile einer html Datei Java Basics - Anfänger-Themen 12
A neue Zeile beim Schreiben in Datei Java Basics - Anfänger-Themen 5
H Nur die erste Zeile einer Datei auslesen Java Basics - Anfänger-Themen 3
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
E extern Datei von meinem Computer aufmachen Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
J CSV-Datei verarbeiten Java Basics - Anfänger-Themen 27
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
Kotelettklopfer Sqlite DB aus Java Datei ansprechen. Java Basics - Anfänger-Themen 147
C XML Datei speichern und laden Java Basics - Anfänger-Themen 18
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
J Json Datei auslesen Java Basics - Anfänger-Themen 4
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
I JAX-WS.... Datei ".ical" zurückgeben.... Wie annotieren? Java Basics - Anfänger-Themen 1
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
E Pfadangaben bei Ausführbarer Jar Datei Java Basics - Anfänger-Themen 8
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
I Datei als Stream aus Ressource laden? Java Basics - Anfänger-Themen 2
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
R Wie installiere ich Jdownloadersetup.sh datei mit debian Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben