Accessing the Filesystem

Now that the applications for all three platforms are ready to go, it’s time to look at some options for implementing INoteRepository to actually store and retrieve the data. One thing to note here is how far you were able to get before having to actually provide this implementation. By applying the abstraction pattern introduced in Chapter 3, the applications were able to work against the interface instead of worrying about the implementation details.

Direct File Access

The first option for persisting data is to simply write to and read from files on the device. The .NET Base Class Library provides a rich set of classes for accessing files, directories, and data streams, which are mostly found in the System.IO namespace. Both iOS and Android give you direct access to the filesystem, meaning that you can access files the same way you would on a computer, using the same System.IO classes. Example 5-26 shows some examples of using some System.IO classes to read and write files, but is by no means exhaustive, as the Base Class Library includes an extensive set of classes you can leverage.

Example 5-26. Accessing a file directly

// 1) writing to a file using convenience method on File File.WriteAllText("/path/to/file", "Foo, bar, baz."); // 2) writing to a file using a stream using (var writer = new StreamWriter("/path/to/file")) { writer.WriteLine("Foo, bar, baz."); } // 3) reading from a file using convenience method on File string fileContents = File.ReadAllText("/path/to/file"); ...

Get Mobile Development with C# now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.