title: Saving file to arraylist and writing back to file; Android
body: <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>