从Windows Phone 7中读取文件

elp*_*elp 4 c# stream isolatedstorage windows-phone-7 c#-4.0

我有一个data/在我的项目中调用的文件夹包含txt files.

我配置Build Actionresources所有文件.

我试过这些不同的方式:

方法1

var resource = Application.GetResourceStream(new Uri(fName, UriKind.Relative));
StreamReader streamReader = new StreamReader(resource.Stream);
Debug.WriteLine(streamReader.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)

方法2

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
string[] fileNames = myIsolatedStorage.GetFileNames("*.txt");
Run Code Online (Sandbox Code Playgroud)

方法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);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试了不同的方法来读取文件而没有成功,为什么?
问题出在哪儿?

这些方法有什么问题?

fName是文件的名称.
这是必要的完整路径data/filename.txt?它无动于衷......

请帮我解决这个愚蠢的问题,
谢谢.

Mil*_*wal 9

你的第二和第三种方法是错误的.当您在应用程序中本地包含文本文件时,您无法通过IS引用它.相反,使用此功能,如果找到它将返回文件内容,否则它将返回"null".它对我有用,希望它适合你.

请注意,如果文件设置为content,"data/filename.txt"则为filePath = 但如果将其设置为resource,则应将其引用为此filePath = "/ProjectName;component/data/filename.txt".这可能就是为什么你的第一种方法可能失败了.

    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";
    }
Run Code Online (Sandbox Code Playgroud)