Attempting to approach this from a different angle - writing another constructor for ContactManagerImpl which takes a writer, to allow me to test the IO
Calling new constructor from constructor with no parameters.  Need to make sure this doesn't throw a FileNotFoundException if the file doesn't exist.
Implemented flush()
Called write() in addNewContact
Fixed bug in constructor of ContactManagerImpl where I put writer assignment the wrong way round. write() in addcontact now working!
Deleted writeToFile and readFile methods
Added flush() call to addNewContact
Wrote test for writeFutureMeeting to check that a Future Meeting successfully writes
Added writer functionality to addFutureMeeting. tested.
Wrote test for dateToString(), a method I am going to write to save me having to repeat the same code to get the string values of the calendars when I write to file
Wrote method dateToString()
refactored addFutureMeeting to include dateToString in write method
Wrote test for writing when adding a past meeting
Added test for contactsToString, like dateToString
contactsToString written
A bit of refactoring, adding getContactString in addFutureMeeting
Fixed bug in addNewPastMeeting where newMeetingId was before write statement, so it was writing the higher value by accident