4

data/プロジェクトに。を含むフォルダがありますtxt files

すべてのファイルに設定Build Actionしました。resources

私はこれらのさまざまな方法を試しました:

方法1

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

方法2

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

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

今、私は成功せずにファイルを読み取るためのさまざまな方法を試しました、なぜですか?
問題はどこだ?

これらの方法の何が問題になっていますか?

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 に答える