I have a custom object class Record that implements Parcelable and I'm creating a ListView via ArrayAdapter<Record> I want to be able to save that list so that it automatically loads the next time the user opens the app. The list is populated dynamically and I'm calling my save method everytime a record is added. Then I have a SharedPreference with a boolean value that I set to true so that I know the user has saved some data to load the next time the app is open. Here are my save and load methods:
public void writeRecordsToFile(ArrayAdapter<Record> records) {
    String fileName = Environment.getExternalStorageDirectory().getPath() + "/records.dat";
    try {
        File file = new File(fileName);
        if(!file.exists()){
            file.createNewFile();
        }
        ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file));
        stream.writeObject(records);
        stream.flush();
        stream.close();
    }
    catch (IOException e){
        Log.e("MyApp","IO Exception: " + e);
    }
    writeSavedState();
}
the writeSavedState() is for my SP
public void readRecordsList() {
    String fileName = Environment.getExternalStorageDirectory().getPath() + "/records.dat";
    try {
        ObjectInputStream inputStream = new ObjectInputStream(getApplicationContext().openFileInput(fileName));
        adapter = (ArrayAdapter<Record>)inputStream.readObject();
        inputStream.close();
    }
    catch (Exception e){
        Log.e("MyApp" , "File Not Found: " + e);
    }
}
When I first open the app I get a message:
E/MyApp﹕ File Not Found: java.lang.IllegalArgumentException: File /storage/emulated/0/records.dat contains a path separator
and then when I add a Record to my list I get the message:
E/MyApp﹕ IO Exception: java.io.IOException: open failed: EACCES (Permission denied)
The second message I'm assuming I'm getting because of the first message. This is my first time working with I/O in Android so any help would be appreciated!
EDIT
After adding the permissions to the manifest I'm now only getting an error:
E/MyApp﹕ IO Exception: java.io.NotSerializableException: android.widget.ArrayAdapter
As I said, my custom object is Parcelable and the rest of this is being done in my MainActivity. Do I need to make a new class that is Serializable to build my ArrayAdapter? 
 
     
    