Dateischreibeproblem mit BufferedWriter

stolperhannes

Grünschnabel
Ich habe folgende Funktion, die M$Excel *.txt Dateien speichern soll:

Die Daten sind in einem zweidimensionalen Stringarray namens sheet gespeichert. Columns und Lines enthalten Die Anzahl Spalten bzw. Zeilen.
Code:
public void save()
    
	{	
		
		int a;
		try {
			//--- Kopie erstellen
			String n = FileName.toString().replace(".txt", ".bak");
			
			//--- Datei erzeugen
			BufferedWriter f = new BufferedWriter(
					new FileWriter(n));
			
			//--- Für jede Ziele
			for(int i=0;i<Lines;i++){
				
				//--- Für jede Spalte-1
				for(a=0;a<Columns-1;a++)
				{ 
					//--- String mit Trennzeichen ausgeben bzw. nur Trennzeichen ausgeben = Tab
					if (sheet[i][a]!=null)f.write(sheet[i][a]+ SEPARATOR);
					else f.write(SEPARATOR);

				}
				
				//--- String mit Zeilenende ausgeben bzw. nur Zeilenende ausgeben = CR + LF
				if (sheet[i][a]!=null)f.write(sheet[i][a]+ LINETERMINATOR);
				else f.write(LINETERMINATOR);

								
			}
			//--- Datei schliessen
			f.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
				
	}
}

Wenn jetzt in der ersten Spalte eines Sheets nichts drinsteht ="" (Erstes Zeichen Tabulator), dann spinnt die Funktion .

Dann wird am Ende einer Zeile KEIN Zeilenendezeichen ausgegeben, sondern noch einmal eine komplette Zeile voller leerer Strings + Zeilenendezeichen.

Hat irgend einer eine Idee woran das liegen könnte?
 
Problem gefunden: Die Leseroutine hat einen Bug.

Statt eines leeren ersten Strings ist in der Tabelle die komplette Zeile gespeichert. Alle folgenden Spalten in der Zeile sind leer. Darum sieht es so aus als ob die Zeile zweimal bearbeitet wird, wo beim zweiten mal alle Strings leer sind.

Da dies ein sehr seltener Fehler ist, ist mir das erst durch "Alle Datein laden" Alle Dateien originalgetreu speichern" mit nachfolgenden "fc *.bak *.txt" aufgefallen...

Vermaledeit...
 
Zurück