WP7 File Helpers


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>
            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>
            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