Datei Speichern/Auslesen funkioniert beim ersten mal nicht

BLR

Erfahrenes Mitglied
Hallo zusammen,
ich schreibe ein gefühltest JsonArray in eine Textdatei.
Komischeweise funktioniert das Lesen bzw. Schreiben (ich weiss eben nicht was) nur beim ersten mal nicht.
z.B: ich schreibe in die Datei "abc" rein. Dann lese ich es auch und es gibt Nichts zum Auslesen.
Dann schreibe ich in die selbe Datei noch mal "adf" rein und schon kann man "adf" aus der Datei auslesen, obwohl ich nichts am Code verändere....

So schreibe ich:

Java:
public void saveExpense(String ort, HashMap<String, String> koordinaten) {
        try {
            Iterator<Map.Entry<String,String>> iterator=  expenses.entrySet().iterator();
            jsonArray = new JSONArray();
            String tmpKey = null;
            while(iterator.hasNext())
            {
                jsonObct = new JSONObject();
                tmpKey = iterator.next().getKey();
                jsonObct.put(ort, tmpKey+"_"+koordinaten.get(tmpKey));
                jsonArray.put(jsonObct);
            }
         
         
            File myFile = new File(file.getAbsolutePath()+"/"+category+".txt");
            myFile.createNewFile();
         
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.write(jsonArray.toString());
            myOutWriter.close();         
            fOut.close();
         
         
         
            /*File myFile = new File(file.getAbsolutePath()+"/"+ort+".txt");
            Das selbe passiert auch mit dem FileWriter
            myFile.createNewFile();
            FileWriter     fWriter = new FileWriter(myFile);
         
            fWriter.write(jsonArray.toString());
            fWriter.close();*/
         
         
        } catch (Exception e) {
            // TODO: handle exception
        }
     
    }

und so lese ich:

Java:
public HashMap<String, String> getKoordinaten(String ort) throws IOException, FileNotFoundException, JSONException{
        FileReader fReader = null;
     
        HashMap<String, String> koordinaten= new HashMap<>();
        File f = new File(file.getAbsolutePath()+"/"+ort+".txt");
        /*
        if (f.exists() && !f.isDirectory()) {
            fReader = new FileReader(file.getAbsolutePath()+"/"+ort+".txt");
        }
        */
     
        File myFile = new File(file.getAbsolutePath()+"/"+ort+".txt");
        FileInputStream fIn = new FileInputStream(myFile);
        BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
     
        //bufferReader = new BufferedReader(fReader);
        String tmp=null;   
        StringBuilder sb = new StringBuilder();
       //Beim ersten Auslesen kann er hier nichts finden. Nach dem zweiten Speichervorgang kann er hier was         //auslesen
        while ((tmp = myReader.readLine()) != null) {
                sb.append(tmp);     
             
        } 
                 
        myReader.close();
        return expenses;
     
     
    }

Beides funktioniert nach dem zweiten Speichervorgang.
Wenn ich das erste mal was speichere und direkt auslese, sagt er, dass es nichts gibts.
 
Hi,

du gibst "expenses" zurück, was auch immer das ist.
Ich weiß nicht genau, wie du mit den Daten arbeiten willst, deine getKoordinaten-Methode erschließt sich mir nicht ganz, da du den Inhalt der Textdatei in einen StringBuilder schreibst und dann ignorierts.
Wenn das jetzt nur daran liegt, dass du Teile des Codes weggenommen hast, kann ich dir nur empfehlen, ein paar Debug-Ausgaben einzufügen und bspw. ausgeben, was du in die Datei schreibst, bzw. welche Werte in deinen Parametern sind etc.

Schöne Grüße
 
Zurück