Saving file to arraylist and writing back to file; Android
<p>I've been trying to open a text file and and save each line as the contents of an arraylist. Once this has been completed I would like to save it back to a file. I have been running into errors for so long and have tried numerous techniques. I found that for some reason, the files themselves are not being created. It may just be a simple error I'm overlooking but if you could provide any help I will be thankful. </p>

<p>Here's the code:</p>

<pre><code>public void addToFile(){

File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/appName/savedlocations");
root.mkdirs();
File fileName = new File(root, "locationslatitude.txt");
File fileName2 = new File(root, "locationslongitude.txt");

String file = fileName.toString();
String file2 = fileName2.toString();

String theContent = Double.toString(currLatitude);
String theContent2 = Double.toString(currLongitude);

s = new Scanner(file);
    while (s.hasNext()){
        fileList.add(s.next());
    }
    s.close();
    fileList.add(theContent);



    s2 = new Scanner(file2);
    while (s2.hasNext()){
        fileList2.add(s2.next());
    }
    s2.close();
    fileList2.add(theContent2);


try {//works for latitude file
        FileWriter writer = new FileWriter(file); 
        for(String str: fileList) { 
          writer.write(str);
          writer.write("\r\n");
        }
        writer.close();
        } catch (java.io.IOException error) {
          //do something if an IOException occurs.
            Toast.makeText(this, "Cannot Save Back To A File", Toast.LENGTH_LONG).show();
    }
//save the arraylist back to its appropriate file
    try {//works for longitude file
        FileWriter writer = new FileWriter(file2); 
        for(String str2: fileList2) { 
          writer.write(str2);
          writer.write("\r\n");
        }
        writer.close();
    } catch (java.io.IOException error) {
      //do something if an IOException occurs.
        Toast.makeText(this, "Cannot Save Back To A File", Toast.LENGTH_LONG).show();
    }
}
</code></pre>

<p>I believe I found the answer to the problem and I wanted to post it back on here so if anyone else faces the same problem this might help them.</p>

<p>The problem was that it wasn't creating the file. The directory was created using "root.mkdirs();". However, the files were not created and I was trying to read from non-existing files. This is what I believe caused the error. So, in order to fix this problem I altered the code to this:</p>

<pre><code>  try{

        s = new Scanner(fileName);
        while (s.hasNext()){
            fileList.add(s.next());
        }
        s.close();
                fileList.add(theContent);

}catch (FileNotFoundException ex){
    ex.printStackTrace();
    try{
        fileName.createNewFile();
    }catch (IOException e){
        e.printStackTrace();
        Toast.makeText(this, "Hit IOException for file one", Toast.LENGTH_SHORT).show();
    }
}

try{  
        s2 = new Scanner(fileName2);
        while (s2.hasNext()){
            fileList2.add(s2.next());
        }
        s2.close();
                fileList2.add(theContent2);
}catch (FileNotFoundException ex){
    ex.printStackTrace();
    try{
        fileName2.createNewFile();
    }catch (IOException e){
        e.printStackTrace();
        Toast.makeText(this, "Hit IOException for file two", Toast.LENGTH_SHORT).show();
    }
}
</code></pre>

<p>This was the only piece of code I had to alter. The code which saved back to the file worked. I hope this will be of use to someone and thanks everyone for your help.</p>
