Txt Schreiben logischer Fehler?

MichaelR

Aktives Mitglied
Hallo zusammen,

ich habe folgendes Problem. Ich habe einen kleinen Währungsrechner in dem man die Kurse anpassen kann. Die aktuellen Kurse werden beim Start aus einer txtDatei geladen, die im gleichen package liegt
Java:
BuffereReader f = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("Kurse.txt")));

nun verändere ich die Variablen und will sie wieder in die txtDatei schreiben
Java:
 File file = new File(""+new InputStreamReader(getClass().getResourceAsStream("Kurse.txt")));

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));

for(int i=0;i<3;i++){
				
                            for(int ii=0;ii<4;ii++){
                                s=""+daten[i][ii];
                                
				bw.write(s);
				bw.newLine();
                            }
                            
			}
						
			bw.close();
Die 2 for schleifen arbeiten einen Array ab, in dem ich die aktuellen Wechselkurse abgelegt hab und schreibt sie ja dann logischerweise Zeile für Zeile, damit ich sie wieder auslesen kann.

Er gibt mir keine Fehlermeldung, und es läuft alles wunderbar, aber die TxtDatei wird nicht überschrieben.

Ich bin mir sicher, dass er die richtige File hat, weil ich hab mal den Filenamen geändert und dann bekomm ich den Fehler, dass er die Datei nicht findet. Hab ich irgendwo einen logischen Fehler drin, den ich übersehen hab?
 

X3TitanCore

Bekanntes Mitglied
Was genau steht denn vorher drin und was soll hinterher drin stehen?
Vielleicht solltest du erst den String zusammenbauen den du schreiben willst und ihn dann in die Date schreiben.
 
Zuletzt bearbeitet:

MichaelR

Aktives Mitglied
Anfangs hab ich die Werte, die ich manuell eingetragen hab, also lauter 0.0, default double Werte.
sieht dann so aus
0
0
...
ich lass des linie für linie auslesen und geb des in einen double [][]daten=new double[4][4];
Hat der Benutzer dann über die Gui die Werte geändert schreib ich in daten die neuen Werte, welche dann in der txtDatei ankommen sollen. sollte dann so aussehen
1
3
...
aber er überschreibt mir des nicht. Bin grad am suchen, ob ich im Quellcode was anderes falsch gemacht hab. Aber eigentlich sollte er ja ein neues File erstellen und ablegen.
 

X3TitanCore

Bekanntes Mitglied
Das einzige was ich mir vorstellen kann ist das bei jedem Schleifendurchlaufe das vorher geschriebene wieder überschrieben wird. Deshalb würde ich erst den String bauen und ihn dann in das File schreiben.
 

MichaelR

Aktives Mitglied
Nein, das ist es nicht. Hab mal ne kleine Testklasse gebastelt
Java:
package test;

public class Start {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		double[][]kurse=new double[4][4];
		
	       kurse[0][0]=1;
           kurse[0][1]=1;
           kurse[0][2]=1;
           kurse[0][3]=1;

           kurse[1][0]=1;
            kurse[1][1]=1;
            kurse[1][2]=1;
             kurse[1][3]=1;
             kurse[2][0]=1;
             kurse[2][1]=1;
             kurse[2][2]=1;
             kurse[2][3]=2;

             kurse[3][0]=3;
             kurse[3][1]=3;
             kurse[3][2]=3;
             kurse[3][3]=1;

             System.out.println("Array befüllt"+kurse[0][1]);
             new Lesen().txtSchreiben(kurse);

	}

}


und die andere klasse
Java:
package test;

import java.io.BufferedWriter;
import java.io.*;

public class Lesen {

public void txtSchreiben(double [][] daten){
		
		BufferedWriter bw;
		String s = null;
		//new File("/währungsrechnerTxtDatei/Wechselkurse.txt").mkdir();

		try{
                  File file = new File(""+new InputStreamReader(getClass().getResourceAsStream("Kurse.txt")));
			

                  bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false)));

			for(int i=0;i<4;i++){
				
                            for(int ii=0;ii<4;ii++){
                                s=""+daten[i][ii];
                                System.out.println(daten[i][ii]);
				bw.write(s);
				bw.newLine();
                            }
                            
			}
					System.out.println(daten[0][1]);	
			bw.close();
		}catch(IOException e){
                    e.printStackTrace();
			System.out.println("Fehler beim erstellen der Datei");
		}
		
	}
}


Und sollte das TxtFile nicht im package sein, bekommt man nen NullPointer. Wie gesagt, der Daten Array sollt anders befüllt sein, er findet anscheinend auch des File, aber überschreibts nicht.
 

X3TitanCore

Bekanntes Mitglied
Ok, ich hab das jetzt mal gestestet. Der legt ein neues File an mit Namen java.io.InputStreamReader@1b67f74 in dem dann die neuen Daten sind. Das heißt der Filename wird falsch gebaut.

Wenn du es so machst und das File in deinem Java Projekt liegt müßte es klappen.

BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
 

MichaelR

Aktives Mitglied
Hat des bei dir geklappt? Ich hab schon auch rumprobiert und bin dann auf FileWriter gekommen
Java:
 File file = new File(""+new InputStreamReader(getClass().getResourceAsStream("Kurse.txt")));
				//File file=new File("c:\\eclipseWorkbench\\bin\\test\\Kurse.txt");
			//file.delete();
                  //file.createNewFile();
                 //String ss=file.getAbsolutePath();
                 //String ss=file.getPath();
                 //file.setWritable(true);
                 
                  bw = new BufferedWriter(new FileWriter(file));

des auskommentierte hab ich auch mal versucht, aber des bringt alles nichts.
Ich weis nicht, aber ich vermute der Fehler liegt schon beim erstellen des Files. Ich werd daran mal weiter rumprobieren
 

X3TitanCore

Bekanntes Mitglied
Bei mir funktioniert es bestens. Hier mal mein Testcode.

Java:
public class FileTest {
	String s;
	double[][] daten = new double[2][2];
	
	public FileTest() throws IOException {
		daten[0][0] = 0;
		daten[0][1] = 2;
		daten[1][0] = 3;
		daten[1][1] = 5.5987097;
		
		 
		BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
		for(int i=0; i<2; i++){
		     for(int ii=0; ii<2; ii++){
		        s= "" + daten[i][ii];
		        bw.write(s);
		        bw.newLine();
		 }
		                            
		}
		bw.close();
	}
}

Gruß
 

Meldanor

Bekanntes Mitglied
In deiner .jar Datei sind keine Datein, sondern nur Ressourcen, die du über Streams erreichen kannst.
Wenn du in deinem Programm IMMER die aktuellsten Kurse haben willst, solltest du die extern in einen Ordner packen, weil:
Du liest das aus deiner .jar aus mittels eines Streams, kannst es jedoch dort nicht ändern.
Dazu müsstest du das .jar komplett entpacken, das .txt ändern und dann alles neu packen, jedoch kannst du die aktuell ausgeführt .jar Datei nicht überschreiben.
Deswegen:
Mach einfach eine externe Datei in den selben Ordner wie .jar und schreib dort rein.
 

MichaelR

Aktives Mitglied
@X3TitanCore irgendwie mag er bei mir trotz alledem noch nicht die Datei überspeichern, aber trotzdem vielen Dank. Werds noch bisschen probieren.

@Meldanor Ok, des klingt logisch. Wär nicht schlecht wenns doch gehen würde, ansonsten muss man ja immer aktuelle Ordner anlegen und die fliegen dann auf der Festplatte rum. Gibt es eine möglichkeit zu schauen, in welchem Ordner sich das .jar gerade befindet? Weil wenn man des schon in Ordner speichert, dann wärs nett, wenn des wenigstens zusammen liegt.
 

X3TitanCore

Bekanntes Mitglied
System.getProperty("user.home");
System.getProperty("user.dir");

zum Beispiel.

Wenn ich das richtig sehe dann liegt dein File auch nicht im Projektorder sondern im Package. Es muß direkt im Projektordner liegen. Weiß nicht ob es funktioniert das man sich in den bin Ordner hangeln kann.

Gruß
 

MichaelR

Aktives Mitglied
Naja, da man es eh nicht verändern kann, wenn es als .jar läuft ist es eigentlich eh uninteressant, wo es liegen muss. Ausser wenn man bei schließen des .jar die Datei nochmal verändern könnte. Aber logischerweise geht des je nicht. Naja, werd mir mal Gedanken machen, wenn ich dafür Zeit hab, oder mal meinen Prof damit langweilen. Ich hab nämlich noch was interessantes gefunden Java Forum @ javaCore.de :: Thema anzeigen - Zugriff auf Dateien in jar-Datei was ich aber noch net so ganz kapier, da ich noch nie Threads gemacht hab. Aber des kann man sicher mal brauchen, deswegen versuch ich es mal zu kapieren.

Ich geb mich jetzt einfach mal damit zufrieden, dass es im gleichen Ordner liegen muss. Des reicht auch aus.

Danke nochmal
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
_user_q Eingegebenen Text wiederholt schreiben lassen Allgemeine Java-Themen 9
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
Y Wie sinnvolle unit tests schreiben Allgemeine Java-Themen 29
O Test schreiben mit Äquivalenzklassen (Aufgabe Prüfung) Allgemeine Java-Themen 9
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
H In jar Resources schreiben? Allgemeine Java-Themen 6
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
Zrebna Wieviele Testfälle muss man hier schreiben? (Software Engineering) Allgemeine Java-Themen 13
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
M In Textdatei schreiben Allgemeine Java-Themen 3
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
Aruetiise " in Datei schreiben Allgemeine Java-Themen 2
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
K Zusammenfassungen schreiben Allgemeine Java-Themen 2
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
MiMa Log4j in Dateien mit eigenem Namen schreiben Allgemeine Java-Themen 3
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
M Makrocode von OO in Java schreiben Allgemeine Java-Themen 5
B Animierte Klasse schreiben - Wie? Allgemeine Java-Themen 9
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
F Lesen effizienter als schreiben? Allgemeine Java-Themen 4
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
M Input/Output Datei Schreiben Allgemeine Java-Themen 3
V Eclipse Ich kann bei eclipse nicht schreiben Allgemeine Java-Themen 1
Tobse HTTP REST API's in SQL schreiben Allgemeine Java-Themen 1
B Übergebene Werte in Gerätedatei schreiben Allgemeine Java-Themen 2
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
M Methoden jRegistryKey und in die Regitrey schreiben Allgemeine Java-Themen 5
M Text in erstelltes Excelfile schreiben Allgemeine Java-Themen 6
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
F Linux & NetBeans: Datei in Systemverzeichnis schreiben? Allgemeine Java-Themen 1
A Input/Output Spätes Schreiben von Dateien der JVM Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
E wav Datei schreiben mit AudioInputStream Allgemeine Java-Themen 3
T Excel - mit jxf sprachabhängige Formeln schreiben Allgemeine Java-Themen 2
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
W Schreiben/Lesen aus RS232 / jssc Allgemeine Java-Themen 0
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
D Datei in Jar schreiben Allgemeine Java-Themen 5
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
MiMa Liste von Pfaden in eine textArea schreiben Allgemeine Java-Themen 7
O Entwicklungshandbuch schreiben Allgemeine Java-Themen 2
S Swing Text in eine JTextArea schreiben Allgemeine Java-Themen 17
O Collections StringSplit und in anderen String schreiben Allgemeine Java-Themen 8
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
M Symmetrischen "KeyGenerator" schreiben Allgemeine Java-Themen 2
B Großes Projekt "gut" schreiben Allgemeine Java-Themen 22
F Sachen in datei schreiben Allgemeine Java-Themen 2
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
M ImageJ: Mit PlugIn Weichzeichnungsfilter schreiben Allgemeine Java-Themen 9
S Threads Abarbeitungsstatus von Threads in Datei schreiben Allgemeine Java-Themen 2
A DOM Datei schreiben Allgemeine Java-Themen 3
F In ein Textfeld im Browser schreiben? Allgemeine Java-Themen 4
Chumax Datei als Admin schreiben Allgemeine Java-Themen 5
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6
I Eigenes Mail-Programm schreiben Allgemeine Java-Themen 21
S eigene regEx schreiben Allgemeine Java-Themen 4
E Performanceverlust beim Schreiben von ResultSet in txt Datei Allgemeine Java-Themen 10
F In mitten einer Textdatei schreiben Allgemeine Java-Themen 7
B Java Plugin schreiben Allgemeine Java-Themen 11
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
S Exception beim Schreiben des Dataset in XML Datei Allgemeine Java-Themen 8
B OOP java.util.logging.Logger: Wie kann ich mehre Klassen in ein Logfile schreiben lassen? Allgemeine Java-Themen 12
I kleines Wochenlohn-Programm schreiben Allgemeine Java-Themen 5
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
C Eigene Sounddateien schreiben Allgemeine Java-Themen 12
das-mo FunktionsParser schreiben Allgemeine Java-Themen 32
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
J HSSF - schreiben in und lesen aus vorhandener Datei Allgemeine Java-Themen 6
E BlueJ Daten in Textdatei schreiben Allgemeine Java-Themen 21
C Property-File lesen und schreiben Allgemeine Java-Themen 20
M Binäre Datei schreiben und lesen Allgemeine Java-Themen 4
T Properties Datei nicht jedes mal neu schreiben? Allgemeine Java-Themen 2
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
kirchrath PCM als WAV schreiben bzw ogg-Vorbis zu WAV Allgemeine Java-Themen 2
D Mehrere String-Werte in eine Tabellen-Zelle schreiben Allgemeine Java-Themen 8
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
D zip Dateien schreiben mit in/outputstream Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben