4

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

我配置Build Actionresources所有文件。

我尝试了这些不同的方法:

方法一

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 吗?是无动于衷...

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

4

1 回答 1

9

您的第 2 和第 3 方法是错误的。当您在应用程序中本地包含文本文件时,您无法通过 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";
    }
于 2012-08-25T13:21:14.170 回答