StringBuffer leere Zeile löschen

127.0.0.1

Bekanntes Mitglied
Hi Leute,

habe einen StringBuffer erzeugt, lese eine Datei ein und bearbeite Sie etwas.
Das funktioniert auch ganz gut.....

Aber leider hat die erste Zeile keinen Inhalt, ist also leer, existiert aber trotzdem.

[XML]

erste Zeile...
zweite Zeile...
usw...[/XML]

Die Zeile enthält keine Leerzeichen oder Absätze oder ähnliches, sie ist komplett leer

Wie kann ich in einem StringBuffer eine leere Zeile löschen ?


Gruß
 
Direkt gar nicht, StringBuffer (ist übrigens veraltet) kennt keine "Zeilen".

Zeig doch mal deinen Code...
 
Direkt gar nicht, StringBuffer (ist übrigens veraltet) kennt keine "Zeilen".

Zeig doch mal deinen Code...

Das es nicht direkt geht hab ich schon bemerkt, oder sagen wir bemerken müssen ^^
wieso veraltet ? also ich nutze StringBuffer relativ viel.......

Code is schwer zu posten, is nämlich sehr viel ^^
Versuche mal das wesentliche herauszuheben:

Java:
StringBuffer sb = new StringBuffer();
BufferedReader inn=null;
try {
inn = new BufferedReader(new FileReader("Mein_File"));

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

if (line.startsWith("%")) {
	zaehler++;
	sb.append(line + CR);
	line = inn.readLine();
}

// hier kommt noch ein switch-case

} catch (Exception e) {
e.printStackTrace();
}

// sb.deleteXY  und hier bräuchte ich das Zeilen-löschen dann
return sb;
 
wieso veraltet ? also ich nutze StringBuffer relativ viel.......
StringBuilder gibt es seit Java 5, das war 2005 😉

Warum nimmst du eigentlich nicht einfach eine String Liste, anscheinend hast du den StringBuffer nur aus Gewohnheit genommen..
 
Ja, ich meine
Java:
List<String> list = new ArrayList<>();
denn dein StringBuffer ist schlicht unpassend.
 
Naja, StringBuffer ist nicht direkt veraltet. Er ist nur für Multithread-Nutzung geschrieben worden und ist deswegen aufgrund der synchronisierten Zugriffsmethoden unnötig langsam. Meist braucht man keinen Multithread-Support. Als Ersatz ist deswegen die Klasse StringBuilder eingeführt worden. Dazu ein Zitat aus der API-Doc von StringBuffer: "As of release JDK 5, this class has been supplemented with an equivalent class designed for use by a single thread, StringBuilder. The StringBuilder class should generally be used in preference to this one, as it supports all of the same operations but it is faster, as it performs no synchronization."
 
Mir ist an Deinem Code gerade etwas aufgefallen, das wahrscheinlich ein Fehler ist. Innerhalb der for-Schleife machst Du zwei Mal line = inn.readLine(); Ist das wirklich gewünscht?
Java:
// So hätt ich das auch gemacht:
for (String line; (line = inn.readLine()) != null;) {
...
// Das ist glaub ich nicht richtig
if (line.startsWith("%")) {
    zaehler++;
    sb.append(line + CR);
    line = inn.readLine(); // <----
}
 
ja, das passt so
wie gesagt, kann leider nicht den ganzen Code posten......

um nochmal auf meine Frage zu dem Stringbuffer zurückzukommen:
gibt direkt leider keine möglichkeit,
aber ich würde es gerne als StringBuffer lassen, nächstes mal versuche ich dann die Arraylist

Bei mir hackts auch etwas was einen "Alternativ Weg" angeht.....
mit ner Schleife kann ich das ganze nicht machen, weil ich ja nur möchte das die erste Zeile entfernt wird.
Deshalb muss ich den Code fürs Löschen außerhalb der Schleife posten, aber das fürt dazu dass ich keinen Zugriff auf mein "line" hab ~~


Versteht man das einigermaßen ? ^^
 

Zurück
Oben