WP7 File Helpers

Posted: 03/07/2012

Here’s with some static methods that will help with reading/write to isolated storage (and deleting/verifying that a file exists). The ReadAllText and WriteAllText methods behave similar to what you would see in the VB.Net “My” namespace in the full framework.

Imports System.IO
Namespace IO

    ''' <summary>
    ''' File utilities for use in isolated storage environments.
    ''' </summary>
    ''' <remarks>
    ''' This code was written to support isolated storage in Silverlight for WP7.
    ''' </remarks>
    Public Class File
        '*********************************************************************************************************************
        '
        '             Class:  File
        '      Initial Date:  03/24/2011
        '      Last Updated:  11/04/2011
        '     Programmer(s):  Blake Pell
        '
        '*********************************************************************************************************************

        ''' <summary>
        ''' Writes all text to the specified file in isolated storage.
        ''' </summary>
        ''' <param name="filename">The name of the file to write to.</param>
        ''' <param name="textToWrite">The text to write to the file.</param>
        ''' <param name="append">Whether or not the file should be appended to.  If the value is false, the file
        ''' will be truncated before it is written to.</param>
        ''' <remarks>
        ''' If the file does not exist, the file will be created via FileMode.CreateNew.
        ''' </remarks>
        Public Shared Sub WriteAllText(filename As String, textToWrite As String, append As Boolean)
            Dim fm As FileMode
            If append = True Then
                fm = FileMode.Append
            Else
                Using store As IsolatedStorage.IsolatedStorageFile = IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
                    If store.FileExists(filename) = False Then
                        fm = FileMode.CreateNew
                    Else
                        fm = FileMode.Truncate
                    End If
                End Using
            End If
            WriteAllText(filename, textToWrite, fm)
        End Sub

        ''' <summary>
        ''' Writes all text to the specified file in isolated storage.
        ''' </summary>
        ''' <param name="filename">The name of the file to write to.</param>
        ''' <param name="textToWrite">The text to write to the file.</param>
        ''' <param name="fm">The FileMode to use.  This will allow you control over how to handle the file</param>
        ''' <remarks>No checks are performed with this overload to whether the file exists or not.<br /><br />
        ''' This code was written to support isolated storage in Silverlight for WP7.
        ''' </remarks>
        Public Shared Sub WriteAllText(filename As String, textToWrite As String, fm As FileMode)
            Using store As IsolatedStorage.IsolatedStorageFile = IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
                Using ifs As New IsolatedStorage.IsolatedStorageFileStream(filename, fm, store)
                    Using st As New StreamWriter(ifs)
                        st.Write(textToWrite)
                        st.Close()
                    End Using
                    ifs.Close()
                End Using
            End Using
        End Sub

        ''' <summary>
        ''' Reads all text from the specified file in isolated storage.
        ''' </summary>
        ''' <param name="filename"></param>
        ''' <returns></returns>
        ''' <remarks>
        ''' This code was written to support isolated storage in Silverlight for WP7.
        ''' </remarks>
        Public Shared Function ReadAllText(filename As String) As String
            Dim buf As String = ""
            Using store As IsolatedStorage.IsolatedStorageFile = IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
                If store.FileExists(filename) = False Then
                    Return ""
                End If
                Using ifs As New IsolatedStorage.IsolatedStorageFileStream(filename, FileMode.Open, store)
                    Using st As New StreamReader(ifs)
                        buf = st.ReadToEnd()
                        st.Close()
                    End Using
                    ifs.Close()
                End Using
            End Using
            Return buf
        End Function

        ''' <summary>
        ''' Initializes the isolated storage and checks whether a file exists.
        ''' </summary>
        ''' <param name="filename"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Shared Function FileExists(filename As String) As Boolean
            Using store As IsolatedStorage.IsolatedStorageFile = IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
                Return store.FileExists(filename)
            End Using
        End Function

        ''' <summary>
        ''' Deletes a file from IsolatedStorage.
        ''' </summary>
        ''' <param name="filename"></param>
        ''' <remarks></remarks>
        Public Shared Sub DeleteFile(filename As String)
            Using store As IsolatedStorage.IsolatedStorageFile = IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication
                store.DeleteFile(filename)
            End Using
        End Sub

    End Class
End Namespace