Frage

Also habe ich ein Programm geschrieben, das den Inhalt von zwei LinkedList in eine Textdatei im Format schreiben soll

„Kopfzeile 1“

„Kopfzeile 2“

„Kopfzeile 3“

x1 y1

x2 y2

x3 y3

...

x1023 y1023

Hier ist der Hauptschreibcode:

    LinkedList<Double> xVal;
    LinkedList<Double> yVal;
    LinkedList<String> header;
    Analize test;
    Scanner scan = new Scanner(System.in);
    FileWriter fstream;
    BufferedWriter out;

    int i=1;
    test = new Analize(i);
    test.addData();
    test.calculate();


    //Writing ModY
    fstream = new FileWriter("BLOCK " +i+"_ModY.txt");
    out = new BufferedWriter(fstream);
    header = test.getHeader();
    xVal=test.getXList();
    yVal=test.getYListMod();


    //Write Header
    out.write(header.get(0)+"_modY");out.newLine();
    out.write(header.get(1));out.newLine();
    out.write(header.get(2));out.newLine();

    for(int j=0;j<xVal.size();j++)
    {
        double x=xVal.get(j);
        double y=yVal.get(j);
        out.write(x+"\t"+y+" "+j);out.newLine();
        //test code
        System.out.println(xVal.get(j)+"    "+yVal.get(j)+" "+j);
        //System.out.println(j);
    }

Das wirklich Ärgerliche ist, dass die Testcodezeile:System.out.println(xVal.get(j)+" "+yVal.get(j)+" "+j);lief tatsächlich 1023 Mal mit den korrekten Werten in System.in, aber die Datei enthält nur Werte bis zum 558. Mal.

Ich bin mir nicht wirklich sicher, was hier passiert ...

War es hilfreich?

Lösung

Ich sehe dich nicht anrufen out.close(); überall.Dadurch wird der zugrunde liegende Stream für Sie geleert und geschlossen.Ich würde es direkt nach Ihrer for-Schleife platzieren.

Stellen Sie immer sicher, dass Sie Ihre Streams schließen, da sonst einige Ihrer Daten möglicherweise im Speicher hängen bleiben und darauf warten, dass die JVM eintrifft und sie in Ihre Datei überträgt.

Andere Tipps

Zusätzlich zu was Cory gesagt hat, schließen Sie den zugrunde liegenden Stream immer in einem final-Block, um sicherzustellen, dass er unabhängig von Ausnahmen geschlossen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top