Read a file from Windows Phone 7

c#, c#-4.0, isolatedstorage, stream, windows-phone-7

Solution

Your 2nd & 3rd approaches are wrong. When you include a text file locally in your app, you can't refer it via the IS. Instead, use this function, it will return the file content if found else it will return `"null"`. It works for me, hope it works for you.

Note, if the file is set as content, the filePath = `"data/filename.txt"` but if it is set as resource it should be referred like this filePath = `"/ProjectName;component/data/filename.txt"`. That may be why your 1st approach might have failed.

    private string ReadFile(string filePath)
    {
        //this verse is loaded for the first time so fill it from the text file
        var ResrouceStream = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
        if (ResrouceStream != null)
        {
            Stream myFileStream = ResrouceStream.Stream;
            if (myFileStream.CanRead)
            {
                StreamReader myStreamReader = new StreamReader(myFileStream);

                //read the content here
                return myStreamReader.ReadToEnd();
            }
        }
        return "NULL";
    }

Problem

I have a folder called `data/` in my project that contains `txt files`. I configured `Build Action` to `resources` to all files. I tried these different ways: method 1 ``` var resource = Application.GetResourceStream(new Uri(fName, UriKind.Relative)); StreamReader streamReader = new StreamReader(resource.Stream); Debug.WriteLine(streamReader.ReadToEnd()); ``` method 2 ``` IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication(); string[] fileNames = myIsolatedStorage.GetFileNames("*.txt"); ``` method 3 ``` using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (StreamReader fileReader = new StreamReader(new IsolatedStorageFileStream(fName, FileMode.Open, isf))) { while (!fileReader.EndOfStream) { string line = fileReader.ReadLine(); al.Add(line); Debug.WriteLine(line); } } } ``` Now, i tried different ways to read files without success, why? Where is the problem? What's wrong with these methods? `fName` is the name of the file. It's necessary the full path data/filename.txt? It's indifferent... please help me with this stupid issue, thanks.

Original source