• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Java-Problem

Stolperhannes

Diablo-Veteran
Registriert
5 April 2004
Beiträge
1.502
Ich habe folgende Funktion, die M$Excel *.txt Dateien speichern soll:

Die Daten sind in einem Stringarray 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 Zeile
			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 ="" wie z.b. in Sounds.txt, dann spinnt die Funktion (Magicpräfix ist auch übel). Erste Zeichen in der Zeile ist TAB-Zeichen.

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
Oben