Search code examples
javaandroidtextappendfilewriter

Can't Get Android to Append Data to .txt file


I'm pretty new here, and have been following all I could find on getting my program to append a series of numbers (determined from how often a button was pressed) to a .txt file whenever a timer runs out, but to no avail-I'm not sure what I'm missing...the app starts out by creating a .txt file in the downloads folder with a template in it:

String initialTemplate ="\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"";
    File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS);
    File file = new File(path, filename+".txt");
    try {
        FileOutputStream fos = new FileOutputStream(file);
        fos.write(initialTemplate.getBytes());
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

And then when a countdowntimer object finishes and restarts/ends, it triggers the class writeresults() to append the values:

if (CountsRemaining < 1){
                textViewTime.setText("00:00:00");
                cancel();
                    writeResults();
                finishcount();
            } else {
                //append data
                    writeResults();
                //Clear all variables
                clearCounts();
                start();
            }

And the important part, to actually write the data, which is what isn't working:

public void writeResults(){
String Message = Count1 + ", " + Count2 + ", " + Count3 + ", " + Count4 + ", " + Count5 + ", " +
        Count6 + ", " + Count7 + ", " + Count8 + ", " + Count9 + ", " + Count10 + ", " + Count11 + Count12;
FileWriter writer;
try {
    File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS);
    File file = new File (path + filename+".txt");
    writer = new FileWriter(file, true);
        writer.append(Message);
        writer.append("this is a writing test message");
        writer.close();
        Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Any idea what I might be missing? Parameters?


Solution

  • The problem is in this line:

    File file = new File (path + filename+".txt");
    

    It should be like this, if you look at your first code, when creating file:

     File file = new File (path, filename+".txt");