Daten in Datei speichern

Status
Nicht offen für weitere Antworten.

michael p

Mitglied
Hi , habe 2 Klassen geschrieben, die 1. soll Daten aufnehmen und
die 2. soll diese in eine txt.Datei speichern. Das funktioniert ja auch aber nicht richtig :bahnhof:

Code:
public class Auto {
private String Hersteller;
private String Modell;
private String Baujahr;

Datei newDatei=new Datei();
	public void setHersteller(){
		Hersteller=StdInput.readString("            Hersteller:  ");
		getHersteller();
	}
	public void getHersteller(){
		newDatei.Datensaetze_sichern(Hersteller+"\n");
	}
	public void setModell(){
		Modell=                StdInput.readString("                Modell:  ");
		getModell();
	}
	public void getModell(){
		newDatei.Datensaetze_sichern(Modell+"\n");
	}
	public void setBaujahr(){
		Baujahr=               StdInput.readString("               Baujahr:  ");
		getBaujahr();
	}
	public void getBaujahr(){
		newDatei.Datensaetze_sichern(Baujahr);
	}
	
public static void main (String[]args){
	Auto newAuto=new Auto();
	newAuto.setHersteller();
	newAuto.setModell();
	newAuto.setBaujahr();
	
}
}
das ist die 1.Klasse in der die Daten eingegeben werden

Code:
	import java.io.File;
	import java.io.FileNotFoundException;
	import java.io.IOException;
	import java.io.RandomAccessFile;
    public class Datei {

	 public void Datei_erstellen(){
	  
	
	    File Dateien = new File(System.getProperty("user.dir")+"/Datei.txt");
	    if(! Dateien.exists())
	    {
	      try
	      {
	        Dateien.createNewFile();
	      }
	      catch(IOException e)
	      {
	        System.out.println("Die Datei konnte nicht erzeugt werden.");
	        return;
	      }
	    }
	 }
	
	     public void Datensaetze_sichern(String a){
	    	 
	    	 try{
	    	 RandomAccessFile rafile = new RandomAccessFile("Datei.txt","rw");
	    	
	    	 rafile.writeChars(a); 
	    	 
	    	 rafile.setLength(10);
	    	 rafile.seek(10);
	    	 
	    	 {
	    	 System.out.println (rafile.readLine());
	    	 }
	    	 rafile.close ();
	    	 }
	    	 catch (FileNotFoundException fnfex)
	    	 {
	    	 System.out.println(fnfex.getMessage());
	    	 }
	    	 catch (IOException ioex)
	    	 {
	    	 System.out.println(ioex.getMessage());
	    	 }
	    	  
	     }

	}
die 2. Klasse, die die Daten eigentlich in die Textdatei eingeben sollte.
Wenn ich jetzt aber zu Hersteller was eingebe und dann zu Modell, dann wird der Hersteller in der txt.datei einfach überschrieben :?: Wie kann ich das wegbekommen?

Ich hoffe ihr könnt was damit anfangen und mir vielleicht helfen.
 
B

Beni

Gast
"write" beginnt immer bei 0 zu schreiben, es sei denn du würdest den "filepointer" an eine andere Stelle schieben (mit der Methode seek).
Wieso setzt du die Länge des Files auf 10? Wenn es grösser war, schneidest du damit einfach einen Teil weg.

Ich denke es wäre einfacher, wenn du die Daten nicht einzeln rausschreiben würdest, sondern eine Methode hast, die sämtliche Werte auf einmal schreibt. Denn was machst du z.B. mit Daten die eine unterschiedliche Länge haben?

(Persönlich löse ich das jeweils so: die Auto-Klasse hat eine Methode "write" und "read", die jeweils einen (Data)Output-/InputStream bekommen. In diesen Methoden wird alles auf einmal gelesen/gespeichert. Die Streams können dann auf Dateien, Netzwerke, ... verweisen.)
 

michael p

Mitglied
ja es muss aber mit raf gehen. ich habe jetzt alles in einen String gepackt und es funktioniert, aber der Zeilenumbruch wird jetzt nicht gemacht. Keine Ahnung wieso?
 

Schbaik

Mitglied
Ich hab nen ähnlichen problem:

Ein aufrufer in ner anderen methode:
Code:
ArrayList bytes = auslesen();
speichern(bytes);

der ausleser:
Code:
public ArrayList auslesen(){
    ArrayList bytes = new ArrayList();
    int data=0;
    try {    
    BufferedInputStream in = new BufferedInputStream(new FileInputStream("1.mp3")); 
    while(( data=in.read())!=-1){
            bytes.add((int)data);
          }
    in.close();
    } catch( FileNotFoundException ex ) {
    } catch( Exception ex ) {
    System.out.println( ex );
        }
     return bytes;
    }


Und die Methode zum Speichern:
Code:
public void speichern(ArrayList bytes){
    // Schreibe alle Elemente als Textzeilen in die Datei:
    try {
      BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream("2.mp3"));
      for(int i = 0; i < bytes.size(); i++){
            out.write((int)bytes.get(i));           // <-------- hier gibt er den Fehler: "inconvertible types"
            //out.format("%s" ,bytes.get(i));
            }
      out.close();

    } catch( IOException ex ) {
      System.out.println( ex );
        }
    }

Hat jemand ne ahnung, wieso meine ArrayList keine Int-Werte gespeichert hat sondern java.lang.object, ich mein ich schreib bytes in form von int rein, aber er macht daraus was anderes, wie bekomm ichs hin das er bei int bleibt??

Danke für die Hilfe
 
B

Beni

Gast
@michael_p: tut mir leid, sehe gerade keine Lösung. Vielleicht wenn du deinen neuen Code postest. :?
@Schbaik: mach nächstes mal bitte einen neuen Thread auf. Dir kommt Autoboxing in die Quere. Einfache Lösung: benutz "ArrayList<Integer>" anstelle von "ArrayList", und lass den Cast "(int)" in "speichern" weg.
 

Schbaik

Mitglied
danke, vielen dank, werd beim nächsten mal auch nen neuen Topic öffnen, wollte kein doppel-topic erzeugen daher verfuhr ich so.

Ich plage mich nun schon seit 2 wochen (immerwieder zwischen durch) mit diesem Problem rum, aber jetzt hab ichs endlich!!!!!

Vor Beni niederfall, danke :D
 

michael p

Mitglied
So jetzt funktionierts, es wird nichts mehr überschrieben, aber alles wird hintereinander in die Datei geschrieben
ich habs mit '\n' versucht, bringt aber gar nichts, bin schon wieder ratlos :?:
Code:
public class Auto {
private String Hersteller;
private String Modell;
private String Baujahr;
private String Leistung;
private String Sitzplaetze;
private String Zuladung;
private String Durchschnittsverbrauch;
private String Hoechstgeschwindigkeit;
private String Verleihstatus;
private String Bemerkung;
Datei newDatei=new Datei();
	public void setHersteller(){
		Hersteller=StdInput.readString("            Hersteller:  ");
		getHersteller();
	}
	public void getHersteller(){
	schreib(Hersteller);
	}
	public void setModell(){
		Modell=                StdInput.readString("                Modell:  ");
		getModell();
	}
	public void getModell(){
	schreib(Modell);
	}
	public void setBaujahr(){
		Baujahr=               StdInput.readString("               Baujahr:  ");
		getBaujahr();
	}
	public void getBaujahr(){
	schreib(Baujahr);
	}
	public void setLeistung(){
		Leistung=              StdInput.readString("              Leistung:  ");
		getLeistung();
	}
	public void getLeistung(){
	schreib(Leistung);
	}
	public void setSitzplaetze(){
		Sitzplaetze=              StdInput.readString("           Sitzplaetze:  ");
		getSitzplaetze();
	}
	public void getSitzplaetze(){
	schreib(Sitzplaetze);
	}	
	public void setZuladung(){
		Zuladung=              StdInput.readString("              Zuladung:  ");
		getZuladung();
	}
	public void getZuladung(){
	schreib(Zuladung);
	}
	public void setDurchschnittsverbrauch(){
		Durchschnittsverbrauch=              StdInput.readString("Durchschnittsverbrauch:  ");
		getDurchschnittsverbrauch();
	}
	public void getDurchschnittsverbrauch(){
	schreib(Durchschnittsverbrauch);
	}
	public void setHoechstgeschwindigkeit(){
		Hoechstgeschwindigkeit=StdInput.readString("Hoechstheschwindigkeit:  ");
		getHoechstgeschwindigkeit();
	}
	public void getHoechstgeschwindigkeit(){
	schreib(Hoechstgeschwindigkeit);
	}
	public void setVerleihstatus(){
		Verleihstatus=         StdInput.readString("         Verleihstatus:  ");
		getVerleihstatus();
	}
	public void getVerleihstatus(){
	schreib(Verleihstatus);
	}
	public void setBemerkung(){
		Bemerkung=             StdInput.readString("             Bemerkung:  ");
		getBemerkung();
	}
	public void getBemerkung(){
	schreib(Bemerkung);
	}
public void schreib(String b){
	char z='\n';
	String Auto=Hersteller+z+Modell+z+Baujahr+z+Leistung+z+Sitzplaetze+z+Zuladung+z+Durchschnittsverbrauch+z+Hoechstgeschwindigkeit+z+Verleihstatus+z+Bemerkung+z;
Datei newDatei=new Datei();
newDatei.Datei_erstellen();
newDatei.Datensaetze_sichern(Auto);
}

public static void main (String[]args){
	Auto newAuto=new Auto();
	newAuto.setHersteller();
	newAuto.setModell();
	newAuto.setBaujahr();
	newAuto.setLeistung();
	newAuto.setSitzplaetze();
	newAuto.setZuladung();
	newAuto.setDurchschnittsverbrauch();
	newAuto.setHoechstgeschwindigkeit();
	newAuto.setVerleihstatus();
	newAuto.setBemerkung();
}

}
	
  public void Datensaetze_sichern(String a){
	    	 
	    	 try{
	    	 RandomAccessFile rafile = new RandomAccessFile("Datei.txt","rw");
	    	 rafile.writeChars(a); 
	    	 rafile.setLength(100);
	    	 rafile.seek(0);
	    	 
	    	 {
	    	 System.out.println (rafile.readLine());
	    	 }
	    	 rafile.close ();
	    	 }
	    	 catch (FileNotFoundException fnfex)
	    	 {
	    	 System.out.println(fnfex.getMessage());
	    	 }
	    	 catch (IOException ioex)
	    	 {
	    	 System.out.println(ioex.getMessage());
	    	 }
	    	  
	     }

	}
 
B

Beni

Gast
Da sind schon Zeilenumbrüche drin, gVIM sieht die deutlich. Ein Windows-Notepad hingegen erkennt die nicht.

Die writeChar-Methode schreibt für jeden char 2 Bytes (damit werden alle möglichen char-Werte abgedeckt). Eine Lösung wäre "writeBytes( String )" zu verwenden, aber dann werden vielleicht einige Buchstaben verstümmelt.

Ansonsten müsstest du auf "readLine" verzichten, und dir selbst etwas mit "readChar" zusammenbauen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
M Daten in CSV Datei Speichern Java Basics - Anfänger-Themen 3
M Aus .txt Datei Daten in Array speichern Java Basics - Anfänger-Themen 3
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
J Input/Output Daten in Datei schreiben und auslesen Java Basics - Anfänger-Themen 23
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
T Input/Output Daten in txt-Datei schreiben - Fehlermeldung Java Basics - Anfänger-Themen 7
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
T Speicherprobleme von daten in einer datei Java Basics - Anfänger-Themen 5
P JSP - Daten aus externer Datei auslesen und anzeigen Java Basics - Anfänger-Themen 3
S Daten aus einer JTable in eine .doc-word- datei exportieren? Java Basics - Anfänger-Themen 7
A daten in datei suchen Java Basics - Anfänger-Themen 3
D ausgabe von daten in txt/csv datei Java Basics - Anfänger-Themen 5
T Daten in einer Datei überschreiben Java Basics - Anfänger-Themen 13
S Daten aus txt-datei einzeln nach Spalten einlesen Java Basics - Anfänger-Themen 16
S Daten zeilenweise aus Datei einlesen Java Basics - Anfänger-Themen 7
I Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
F Falsche Daten aus Datei Java Basics - Anfänger-Themen 2
S StringTokenizer: Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
R ObjectOutputStream -> Daten an Datei anhängen Java Basics - Anfänger-Themen 3
B Daten aus Datei lesen und in JTable anzeigen Java Basics - Anfänger-Themen 49
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben