In CSV-Datei schreiben

Status
Nicht offen für weitere Antworten.
U

Unregistriert

Gast
Hi Leute,

Also mein Problem ist das ich zwar aus einer CSV-Datei lesen kann aber jedoch nicht in eine schreiben.
Es steht dabei keine Fehlermeldung das die Datei nicht gefunden wurde, jedoch wenn ich nach dem Ausführen des programms in die CSV datei schau ist die leer.
Ich weiß nicht was ich dabei falsch mache.
Das wäre mein Quelltext:

Java:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            BufferedReader f;
            String line;
            int i = 1;
            FileWriter f1;           
            f1 = new FileWriter("ausgabedatei.csv");
            try {
                f = new BufferedReader(new FileReader("Dateipfad"));
                while ((line = f.readLine()) != null) {
                    System.out.println(i + "  " + line);
                    String s1 = i + line;
                    BufferedWriter bw = new BufferedWriter(new FileWriter("ausgabedatei.csv"));
                    bw.write(s1);
                    i++;
                }
                f.close();
                f1.close();
            } catch (IOException e) {
                System.out.println("Fehler beim Lesen der Datei");
            }
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Ich arbeite mit Netbeans und die CSV-Dateien habe ich direkt im Projekt angelegt.


Danke im Vorraus.

mfg


P.S. Weiß das ein paar Zeilen Code umsonst sind
 

HoaX

Top Contributor
2 Fehler:
a) Du überschreibst deine Ausgabedatei bei jedem Durchlauf
b) Du schließt nirgendwo die Ausgabe ab, d.h. der BufferedWriter schreibt nie in die Datei -> leer

PS: Wenn du weist dass manche unnötig sind, wieso lässt du diese dann nicht weg?!
 

AndyHa

Mitglied
Hallo,
das Überschreiben vermeidest du, indem du den BufferedWriter außerhalb der Schleife initialisierst und nur das eigentliche Lesen und Schreiben innerhalb der Schleife behandelst.

Die Zeile
Java:
BufferedWriter bw = new BufferedWriter(new FileWriter("ausgabedatei.csv"));
also vor die while-Schleife setzen.

Ich hoffe, dann funktioniert es.

Grüße
Andy
 

Mcburn

Mitglied
Ich hätte dazu noch ne Frage.

Bei mir bringt er immer eine NullPointerException beim speichern.

Java:
  public void actionPerformed(ActionEvent e)
  {

   try{
  


  
     Object obj = e.getSource();
     if(obj == befehl.btnBeenden) System.exit(0);
  
     DecimalFormat df= new DecimalFormat("#,##0.00");
  
     String menuText;

     //chooser.addChoosableFileFilter(csvFilter);

     chooser.setDialogTitle("CSV Datei Oeffnen");



  
    menuText = e.getActionCommand();
    
    if (obj == befehl.btnBeenden || obj instanceof MenuItem && menuText == "Beenden")
            { 
            System.exit(0);
          }//if (obj == fenster.btnBeenden)
    


    if(obj == befehl.btnEinlesen || obj instanceof MenuItem && menuText == "Einlesen" )
      {

        chooser.setMultiSelectionEnabled(true);
        int option = chooser.showOpenDialog(null);
        
        
        FileInputStream fis = new FileInputStream(chooser.getSelectedFile().getPath());
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader reader = new BufferedReader(isr);




        FileOutputStream fes = new FileOutputStream("VergleichSpeicher.csv");
        OutputStreamWriter res = new OutputStreamWriter(fes);
        BufferedWriter speicher = new BufferedWriter(res);
        if(option == JFileChooser.APPROVE_OPTION)
          {

          while( i < 5000){
          
                                               csvdaten[i] = reader.readLine();
                                               System.out.println(csvdaten[i]);
                                               
                                               speicher.write(csvdaten[i]);
                                               i++;
                                               }

          System.out.println(reader.readLine());





          //buff = new BufferedReader();
          }

      }
     if(obj == befehl.btnTest )
      {
      }



   } //try block
  catch(FileNotFoundException error)
    {
    befehl.lblLeer.setText("Fehler bei Eingabefeld..");
    }
  catch(IOException error){
    befehl.lblLeer.setText("Fehler bei Eingabefeld..");
  }
  catch(NullPointerException error){
    befehl.lblLeer.setText("Fehler beim Speichern");
  }
    
  }//public void actionPerformed(ActionEvent e)
 
S

SlaterB

Gast
bitte für die Zukunft bedenken:
- muss ich mein Programm gleich mit einer 5000-Zeilen-Datei testen? reichen nicht 50 oder gar erstmal nur 3?

- poste ich einen Teil meines Programms mit unbekannten Variablen, mit unnötigen Blahblah wie 30 Zeilen zum Thema Programm-beenden, ein nicht verwendetes new DecimalFormat("#,##0.00") oder unnötiger Exception-Behandlung,
oder versuche ich ein kurzes für jeden verständliches Testprogramm zu erstellen

- formatierten Code usw.
Java:
public class Test {
    public static void main(String[] args) throws Exception {
        String file = "test.csv";
        FileInputStream fis = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader reader = new BufferedReader(isr);

        FileOutputStream fes = new FileOutputStream("VergleichSpeicher.csv");
        OutputStreamWriter res = new OutputStreamWriter(fes);
        BufferedWriter speicher = new BufferedWriter(res);

        String[] csvdaten = new String[5000];
        int i = 0;
        while (i < 5000)         {
            csvdaten[i] = reader.readLine();
            System.out.println(csvdaten[i]);

            speicher.write(csvdaten[i]);
            i++;
        }
    }
}

---------

die Exception trat bei mir auf, wenn zu wenig Zeilen vorhanden sind, dann liefert reader.readLine() null, was der Writer gar nicht gut findet
 
Zuletzt bearbeitet von einem Moderator:

Mcburn

Mitglied
Okay danke schön :). Tut mir leid ich wollte Anfangs nur den Fehler verursachenden Code hinschreiben war aber unsicher und hab deswegen alles reingeschrieben.

Ich gelobe besserung.
 

vsk

Aktives Mitglied
Ich komme mit diesen ganzen Möglichkeiten nicht zurecht
RandomAccessFile
FileWriter
Buffered
;(

Ich möchte doch eigentlich nur immer mal wieder Daten in eine CSV Datei schreiben, im Stil
babla;blabla;blabla;

Dafür baue ich mit mittels der getMethoden eines Objectes einene String mit Trennzeichen ";" aber ich habe keinen Plan wie ich denn in eine Datei schreiben kann.

Wenn ich das mit in meine While Schleife packe, dann erzeugt er ja immer einen neuen BufferedReader oder?

Java:
private boolean schreibeDaten(Vector PersonenVector){
        boolean status = false; //Rückgabewert wird true falls geschrieben werden konnte
        String SpeicherString ="wenn Sie dies in der Datei lesen ist ein Fehler passiert";
        Iterator iti = PersonenVector.iterator(); //Zeiger zum "Durchwandern" des Vectors "alternativ" zur for-Schleife
        BufferedWriter bw;
        try{
            bw = new BufferedWriter(new FileWriter("ausgabedatei.csv"));
        }catch (Exception e){}
        while(iti.hasNext()){
            Person einePerson=(Person)iti.next();
            SpeicherString=einePerson.getAnrede()+";"+einePerson.getName()+";"+einePerson.getVorname()+";"
                    +einePerson.getStrasse()+";"+einePerson.getPLZ()+";"+einePerson.getOrt()+";"
                    +einePerson.getTelefon()+";"+einePerson.getFax()+";"+einePerson.getBemerkung()+"\n"; 
// ; ist Trennzeichen, evtl durch globale Variable ersetzen
            try{
                bw = new BufferedWriter(new FileWriter("ausgabedatei.csv"));
                bw.write(SpeicherString);
            }catch (IOException e){}
            
        }
        return status;
    }
 
Zuletzt bearbeitet von einem Moderator:

vsk

Aktives Mitglied
Danke fuer die schnelle Antwort.

Problem, wenn ich
Java:
bw = new BufferedWriter(new FileWriter("ausgabedatei.csv"));

ausserhalb der while Schleife anbringe, erhalte ich den Fehler das "bw" möglicherweise nicht initialisiert wurde

und muss ich nicht ein RandomAccessFile machen damit er mir die Datei anlegt?
 
S

SlaterB

Gast
stimmt, das erste try/catch könnte zu einem nicht-initialsierten bw führen,
schreibe in Zeile 5
BufferedWriter bw = null;
dann bekommst du im Fehlerfall schlimmstenfalls eine NullPointerException,

oder verwende nur ein try/ catch um den gesamten Code


FileWriter legt eine Datei an wie RandomAccessFile auch
 

vsk

Aktives Mitglied
Danke! funktioniert alles !

und hier fuer nachfolgende Generationen ;)
PersonenVector enthält Objecte vom Typ Person (Eigenbau)
Java:
private boolean schreibeDaten(Vector PersonenVector){
        boolean status = false; //Rückgabewert wird true falls geschrieben werden konnte
        String SpeicherString ="wenn Sie dies in der Datei lesen ist ein Fehler passiert";
        Iterator iti = PersonenVector.iterator(); //Zeiger zum "Durchwandern" des Vectors "alternativ" zur for-Schleife
        BufferedWriter bw = null;
        try{
            bw = new BufferedWriter(new FileWriter(DateiName)); //Dateiname ist ein String "meineDatei.csv"
        
            while(iti.hasNext()){
                Person einePerson=(Person)iti.next();
                SpeicherString=einePerson.getAnrede()+";"+einePerson.getName()+";"+einePerson.getVorname()+";"
                    +einePerson.getStrasse()+";"+einePerson.getPLZ()+";"+einePerson.getOrt()+";"
                    +einePerson.getTelefon()+";"+einePerson.getFax()+";"+einePerson.getBemerkung()+"\n"; // ; ist Trennzeichen, evtl durch globale Variable ersetzen
            
                bw.write(SpeicherString); //String schreiben
                bw.flush();//Puffer leeren
            }
            bw.close();//BufferWriter schliessen
            status=true;
        }catch (Exception e){}
        return status;
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
C XML Datei schreiben Java Basics - Anfänger-Themen 14
G In Datei schreiben Java Basics - Anfänger-Themen 1
J String in Datei schreiben Java Basics - Anfänger-Themen 4
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
x-tshainge In gespeicherter Datei schreiben? Java Basics - Anfänger-Themen 7
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
R Input/Output Dateinamen aus Verzeichnis in Datei schreiben Java Basics - Anfänger-Themen 3
P Erste Schritte Schreiben in eine Datei Java Basics - Anfänger-Themen 9
M In einer Datei schreiben - Java Java Basics - Anfänger-Themen 3
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
I Input/Output 3 Werte in Datei schreiben, duplikate vermeiden Java Basics - Anfänger-Themen 4
H Integer in Datei schreiben Java Basics - Anfänger-Themen 2
S Input/Output Alphabet in eine Datei schreiben und Anzahl von Zeichen ausgeben. Java Basics - Anfänger-Themen 4
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Klasse in INI-Datei schreiben Java Basics - Anfänger-Themen 12
M In Datei schreiben Java Basics - Anfänger-Themen 7
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
L OOP Mit RandomAccesFile auslesen und in Datei schreiben Java Basics - Anfänger-Themen 8
G Wert in Ascii Datei ändern, ohne die Datei neu zu schreiben Java Basics - Anfänger-Themen 24
K Erste Schritte datei schreiben Java Basics - Anfänger-Themen 5
J Input/Output Daten in Datei schreiben und auslesen Java Basics - Anfänger-Themen 23
W HEX-Zahl in Datei schreiben Java Basics - Anfänger-Themen 6
S ANSI-Datei einlesen UND UTF-8-Datei schreiben Java Basics - Anfänger-Themen 3
S Input/Output Sehr langen String in Datei schreiben Java Basics - Anfänger-Themen 8
B String der eigentlich eine Ansammlung von HEX zeichen ist in datei schreiben in Hex Java Basics - Anfänger-Themen 8
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
E String in txt datei schreiben? Java Basics - Anfänger-Themen 4
E txt Datei schreiben und lesen Java Basics - Anfänger-Themen 9
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
R Array in Text Datei schreiben Java Basics - Anfänger-Themen 2
A Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben Java Basics - Anfänger-Themen 9
D Wert von Combobox in Datei schreiben Java Basics - Anfänger-Themen 2
N Datei mit max 2000 Zeilen schreiben Java Basics - Anfänger-Themen 9
G Input/Output System.err zusätzlich in Datei schreiben Java Basics - Anfänger-Themen 27
R Wie Int-Wert in Datei schreiben? Java Basics - Anfänger-Themen 3
L Objekt in Datei schreiben Java Basics - Anfänger-Themen 8
T Input/Output Daten in txt-Datei schreiben - Fehlermeldung Java Basics - Anfänger-Themen 7
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
F \n aus String in Datei schreiben Java Basics - Anfänger-Themen 5
S Datei einlesen und Ergebnis wieder in Datei schreiben Java Basics - Anfänger-Themen 5
M txt-Datei schreiben: Es erscheinen komische Kästchen Java Basics - Anfänger-Themen 4
K weiter schreiben in einer datei Java Basics - Anfänger-Themen 5
P ArrayList in Datei schreiben Java Basics - Anfänger-Themen 5
M Sortierte Tabelle in Datei schreiben Java Basics - Anfänger-Themen 5
A Datei Lesen und Schreiben in gleichen Klasse Java Basics - Anfänger-Themen 3
isowiz Mehrere Threads schreiben in eine Datei Java Basics - Anfänger-Themen 5
M Datei auslesen und Array schreiben?! Java Basics - Anfänger-Themen 8
U String lässt sich nicht in txt datei schreiben! Java Basics - Anfänger-Themen 7
A OOP Binären Datenstrom in Datei schreiben Java Basics - Anfänger-Themen 4
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
C Abschnittsweise in eine Datei schreiben Java Basics - Anfänger-Themen 2
J Strings aus einer Datei in 2D Array schreiben Java Basics - Anfänger-Themen 3
W Schreiben in Datei - 192 KB Limit Java Basics - Anfänger-Themen 2
S In eine datei schreiben Java Basics - Anfänger-Themen 3
N Java Programm soll Datei in eigene jar schreiben Java Basics - Anfänger-Themen 13
J 2-dim Array auslesen und in Datei schreiben Java Basics - Anfänger-Themen 10
L ArrayList über Methode in Datei schreiben Java Basics - Anfänger-Themen 13
A Textdatei von URL auslesen und in Datei schreiben Java Basics - Anfänger-Themen 5
J Problem mit Datei lesen und schreiben Java Basics - Anfänger-Themen 8
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
M Datei Lesen Und Schreiben! -.- Java Basics - Anfänger-Themen 7
A schreiben einer datei Java Basics - Anfänger-Themen 3
K Applet soll Datei schreiben Java Basics - Anfänger-Themen 13
S CSV-Datei einlesen und in MySql schreiben Java Basics - Anfänger-Themen 3
R Sequentielle Datei lesen und schreiben Java Basics - Anfänger-Themen 5
J Objektvariablen in eine Datei schreiben Java Basics - Anfänger-Themen 2
J schreiben in einer datei Java Basics - Anfänger-Themen 8
H mehrere Strings zeitlich versetzt in eine Datei schreiben Java Basics - Anfänger-Themen 3
2 Mit Java in eine WORD-Datei schreiben Java Basics - Anfänger-Themen 18
W Strings in Text-Datei schreiben Java Basics - Anfänger-Themen 5
T Problem bei Schreiben in Datei Java Basics - Anfänger-Themen 4
A Schreiben in eine Datei Java Basics - Anfänger-Themen 5
D An eine ausgewählte Stelle in der Datei schreiben? Java Basics - Anfänger-Themen 7
B Werte mit Schleife in Datei schreiben(zeitgesteuert) Java Basics - Anfänger-Themen 3
G bin-Datei anlegen und schreiben Java Basics - Anfänger-Themen 5
D In ner Datei schreiben Java Basics - Anfänger-Themen 5
T Problem beim schreiben in Datei Java Basics - Anfänger-Themen 7
A Problem beim Schreiben in eine Datei Java Basics - Anfänger-Themen 3
H Russische Zeichen in Datei schreiben und wieder auslesen Java Basics - Anfänger-Themen 3
M bunter text in datei schreiben Java Basics - Anfänger-Themen 6
F Problem mit schreiben in .txt datei Java Basics - Anfänger-Themen 5
L Eclipse text datei schreiben! Java Basics - Anfänger-Themen 3
L Mehrere Objekte mit NIO in eine Datei schreiben Java Basics - Anfänger-Themen 4
J Treepath mit XMLEncode in xml-Datei schreiben Java Basics - Anfänger-Themen 4
B schreiben in Datei in JAR-Datei Java Basics - Anfänger-Themen 2
S ans Ende einer Datei schreiben Java Basics - Anfänger-Themen 3
T Text in Datei schreiben Java Basics - Anfänger-Themen 4
P datei in 2d array schreiben Java Basics - Anfänger-Themen 8
G (Video) in Datei schreiben. Java Basics - Anfänger-Themen 3
R große Datenmenge in Datei schreiben Java Basics - Anfänger-Themen 8
G problem beim schreiben in eine txt datei Java Basics - Anfänger-Themen 2
G in txt datei schreiben Java Basics - Anfänger-Themen 5
H Am ende einer existierenden Datei schreiben? Java Basics - Anfänger-Themen 8
T gezieltes lesen/schreiben in datei Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben