Zeilen in .txt Datei löschen

127.0.0.1

Bekanntes Mitglied
Hi Leute,

ich habe ein kleines Problem, oder einen Denkfehler in meinem Programm und wollte fragen ob mir jemand von euch helfen kann.
Ich versuchs kurz zu machen ;)


Ich möchte eine Textdatei einlesen, die ersten Zeilen löschen, und dann die Datei speichern

Habe schonmal etwas rumgespielt:


Die Datei hat gleich als erstes 12 Zeilen, die alle mit "! *" anfangen, also Ausrufezeichen, Leerzeichen, Sternchen
Java:
StringBuffer sb = new StringBuffer();
inn = new BufferedReader(new FileReader("Datei"));

for (String line; (line = inn.readLine()) != null;) {

if(line.startsWith("! *"))
{
	int bisEnde = line.length();
	sb.delete(0, bisEnde);


}
(klammern schließen, und noch n bissle Code davor und dannach is klar ^^)

Das funktioniert auch schon so wie ich das möchte, aber er löscht mir nicht alle Zeilen, die letzte bleibt immer stehen ! Warum ?!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
an deinen Code ist wenig verständlich, der StringBuffer sb wird angelegt und ist immer leer,
nichts kommt hinein, wieso wird dort delete aufgerufen?

und würde delete(0, bisEnde) nicht nur genau dann funktionieren, wenn die aktuelle Zeile auch genau am Beginn des StringBuffers steht?
ist das für alle Zeilen immer so und wenn ja kann warum/ kann man dann nicht einfach den aktuellen Inhalt des StringBuffers komplett ignorieren?

Datei speichern erfordert noch eigenen Code, das weißt du hoffentlich, nur in Java Strings hin und her zu speichern ändert die Datei nicht,
warum die letzte Zeie anders behandelt werden sollte, ist abgesehen von den genannten Merkwürdigkeiten (vielleicht das Löschen genau am Anfang des Buffers) nicht zu erkennen,

logge doch erstmal in der Schleife, ob jede Zeile dort ankommt, und logge dann wie jede verarbeitet wird,
wie z.B. der Buffer vor und nach einem remove aussieht, ob die richtige Zeile oder nicht ganz was anderes gelöscht wird,
Standardbehandlung für alle Fehler ;)
 

127.0.0.1

Bekanntes Mitglied
hm, danke schonmal


das schwierige is, dass ich das meiste vom Code nich zeigen kann (Firma und so).

Aber das programm an sich läuft, also alles funktioniert,
das lesen, das ändern, das Speichern und so

schwierig zu verstehen, ich weiß

Und das mit dem delete vom StringBuffer geht auch, aber eben nur 10 Zeilen, dann hört er einfach auf, obwohl es doch noch 2 Zeilen gibt

Wenn ich zwischendrin mit "System.out.println" prüfe ob er überhaupt die Zeilen findet, dann klappt das, er findet alle Zeilen, und gibt mir sogar die richtige Länge aus


???:L
 
N

nillehammer

Gast
Der Code macht so nicht viel Sinn, weil Du versuchst, aus einem StringBuffer etwas zu löschen, obwohl der garnicht gefüllt ist. Genau anders wird ein Schuh draus.
- Wenn die Zeile NICHT mit "! *" startet, dann appende sie zum StringBuffer
In Code sieht das dann so aus:
Java:
StringBuffer sb = new StringBuffer();
BufferedReader inn = new BufferedReader(new FileReader("Datei"));

for (String line; (line = inn.readLine()) != null;) {

  if (!line.startsWith("! *")) {

    sb.append(line);
  }
}
 

127.0.0.1

Bekanntes Mitglied
ok, hab deinen Code ma ausprobiert, also das mit dem

Java:
if (!line.startsWith("! *")) {
 
    sb.append(line);
  }

funktioniert so wie es soll, aber er fügt einfach nur alles außer das was ich nich haben will nochmal ein.
Hab jetzt also meine ersten 12 Zeilen nur einmal dastehen, die anderen alle doppelt ^^

da fehlt dann doch noch was im Code oder ?
 
S

SlaterB

Gast
ja, da fehlt z.B. deine bisherigen appends zu entfernen ;),

in unbekannten Code einzugreifen ist nunmal ein Lauf mit verbundenen Augen über heiße Kohlen,
da kannst du nicht zuviel erwarten
 
N

nillehammer

Gast
Aha, Du hast den StringBuffer also schon befüllt und zwar einerseits mit Zeilen, die Du drinnen haben willst und andererseits mit Zeilen, die Du nicht drinnen haben willst. Die Zeilen, die nicht rein sollen, willst Du nun in einem zweiten Schritt wieder heraus löschen und hast dafür mal Code ausprobiert, der leider nicht funktioniert wie erwartet.

Da würde ich doch eher den Ansatz verfolgen, den StringBuffer nur mit den Zeilen zu füllen, die auch tatsächlich rein sollen. Dafür war mein Code ein Beispiel. Versuch bitte auf der Schiene weiter zu machen.

In einem StringBuffer nach Zeichenketten suchen, die entfernt werden sollen, ist ohne Umweg garnicht möglich. Denkbar wäre, ihn in einem String zu speichern und mit replaceAll unter Verwendung eines passenden Regex-Patterns zu arbeiten. Ist aber alles unnötig, wenn Du schon beim Einlesen vernünftig filterst.
 

127.0.0.1

Bekanntes Mitglied
ok, dank dir nillehammer, ich denke an der Stelle werd ich weitermachen

Mal ne andere Idee, über die ich auch schon nachgedacht hab:
Kann man irgendwie sagen dass die ersten 12 Zeilen gelöscht werden, egal was drin steht ?
Weil ich weiß dass es immer 12 Zeilen sind.

Also ein Befehl um X Zeilen zu löschen.

Mein Freund google kann mir leider nicht weiterhelfen
 
S

SlaterB

Gast
'löschen' meinst du hoffentlich wie aktuell gelernt als 'gar nicht erst in StringBuffer einfügen',
du kannst eine Laufvariable zeilenAnzahl mitzählen und dann noch das berühmte if verwenden
 
N

nillehammer

Gast
Kann man irgendwie sagen dass die ersten 12 Zeilen gelöscht werden, egal was drin steht ?
Weil ich weiß dass es immer 12 Zeilen sind.

Also ein Befehl um X Zeilen zu löschen.
Aus dem StringBuffer nur über den Umweg String und replaceAll oder indexOf mit passendem Pattern . Ein StringBuffer hat keine Idee, was eine Zeile ist. Für den sind es einfach ein Haufen chars, auf die man allenfalls per Index zugreifen kann.

Du könntest allerdings statt in einen StringBuffer die Zeilen in eine List<String> einlesen. Da kannst Du dann sehr einfach die ersten zwölf Einträge löschen.

Die richtige Filterung beim Einlesen halte ich aber für den besten Weg. Beim Einlesen kannst Du, wie schon von SlaterB geschrieben, innerhalb der Schleife eine Zählvariable hochzählen und erst dann an den StringBuffer appenden, wenn die Zählvariable größer als die auszulassende Zeilenanzahl ist.
 
Zuletzt bearbeitet von einem Moderator:

127.0.0.1

Bekanntes Mitglied
oh man !
Nach 2 Tagen intensiver Fehlersuche hab ich es nun endlich beheben können !
Funktioniert nun ^^

Woran's lag:

Musste einfach nur den Codeblock:
Java:
if (!line.startsWith("! *")) {

//hier mein restlicher Code

}
um mein anderen Code packen !

Mehr nicht........
irgendwie deprimierend, wenn man bedenkt wieviel Zeit man verschwendet hat ^^
aber so is das in java nun mal ;)


Danke an alle für die gute, und auch schnelle Hilfe !

Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zeilen in einer Datei löschen Allgemeine Java-Themen 3
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
thE_29 Größe bzw. Zeilen einer Datei Allgemeine Java-Themen 4
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
H Swing JTextArea als TableCellRenderer in JTable - wie Zeilen selektieren? Allgemeine Java-Themen 47
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3
R Methoden Was passiert in den markierten Zeilen? Allgemeine Java-Themen 8
Joker4632 Klassen Buffered Reader liest die Leerzeichen am Zeilen Ende nicht mehr Allgemeine Java-Themen 2
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
KaffeeFan FileWriter nur leere Zeilen beschreiben Allgemeine Java-Themen 3
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
M Zeilen zu einem DefaultTableModel hinzufügen Allgemeine Java-Themen 1
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
I JTextArea soll nur drei Zeilen anzeigen Allgemeine Java-Themen 1
Java-Insel Zeilen im Terminalfenster unsichtbar machen Allgemeine Java-Themen 9
P ganze Zeilen in einem File mit .replace() ändern. Allgemeine Java-Themen 10
L jTable drag & drop einzelner Zeilen Allgemeine Java-Themen 4
P Aus einem File Zeilen auslesen. Allgemeine Java-Themen 15
C Zeilen/Spaltenzahl Allgemeine Java-Themen 7
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
B Problem mit leeren Zeilen Allgemeine Java-Themen 2
B Textdatei Zeilen auslesen Allgemeine Java-Themen 7
A Email versenden mehrere Zeilen Allgemeine Java-Themen 10
K Textdatei komplett auslesen bis auf 2 Zeilen Allgemeine Java-Themen 2
A Zeilen aus einer Textdatei löschen Allgemeine Java-Themen 6
MQue 16 Fehler pro 1000 Zeilen Allgemeine Java-Themen 11
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
D (BufferedReader) inLine() "verschluckt" zeilen ? Allgemeine Java-Themen 2
G 2 zeilen in textdatei beim auslesen verbinden Allgemeine Java-Themen 10
MQue Zeilen nach rechts verschieben Allgemeine Java-Themen 3
B Entfernen von Zeilen/Spalten aus einer Matrix Allgemeine Java-Themen 8
G einzelne zeilen aus textArea auslesen Allgemeine Java-Themen 8
T Zeilen eines Projekts zählen lassen Allgemeine Java-Themen 14
P Kompletten Textseiten in gleich lange zeilen schneiden Allgemeine Java-Themen 7
L In JTable Zeilen n. selben Dateninhalt filtern & ausgebe Allgemeine Java-Themen 16
S FileReader Methode nach Zeilen. Allgemeine Java-Themen 2
R Daten in File schreiben (mit Zeilen beachten) Allgemeine Java-Themen 12
V Zeilen lesen Allgemeine Java-Themen 3
V Anzahl der Zeilen in einem File Allgemeine Java-Themen 3
O Mit jsoup Text aus HTML-Datei rausgrabben Allgemeine Java-Themen 29
Zrebna Aus einer jar-Datei eine exe-Datei erzeugen lassen Allgemeine Java-Themen 37
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
L Best Practice Zip Datei aktualisieren Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
Hatsi09 Jar datei ausführen verursacht NumberFormatException Allgemeine Java-Themen 9
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
N Txt Datei auslesen. Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben