从Windows Phone 7读取一个文件。

4

我的项目中有一个名为 data/ 的文件夹,其中包含 txt 文件

我将所有文件的 构建操作 配置为 资源

我尝试了以下不同的方法:

方法1

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

方法二


IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
string[] fileNames = myIsolatedStorage.GetFileNames("*.txt");

第三种方法

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);
      }
   }
}

现在,我尝试了几种读取文件的方法,但都没有成功,为什么?
问题出在哪里?

这些方法有什么问题吗?

fName是文件名。
需要完整路径data/filename.txt吗?不管。

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


找不到“NULL”资源。我无法找到这些文件。 - elp
1个回答

9

你的第二和第三种方法都是错误的。当你在应用程序中包含一个本地文本文件时,你不能通过IS引用它。相反,使用这个函数,如果找到文件内容,它将返回文件内容,否则它将返回"null"。它对我有用,希望对你也有用。

请注意,如果文件设置为内容,则filePath = "data/filename.txt",但如果文件设置为资源,则应像这样引用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";
    }

非常好。如果我将文件设置为“内容”而不是“资源”,第一种方法就可以正常工作!谢谢。 - elp
1
太好了!那么问题确实出在你传递的文件名上。 :) - Milan Aggarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接