0

一連のファイルで特定の名前を検索する単純なプログラムを作成しています.約23個のファイルを通過します。これを達成するために StreamReader、クラスを使用しているため、コードの記述を減らすために、

List<StreamReader> FileList = new List<StreamReader>();

タイプ StreamReader の要素を含むリストと私の計画は、リストを反復処理して各ファイルを開くことです。

foreach(StreamReader Element in FileList)
{
    while (!Element.EndOfStream)
    {
        // Code to process the file here.
    }
}

FileList 内のすべてのストリームを開きました。問題は、

Null 参照例外

while ループの条件で。

ここで私が行っている間違いと、この例外が発生する理由、およびこの問題を修正するために実行できる手順を誰か教えてもらえますか?

4

1 に答える 1

2

上記の人々のように、次の方法を使用します。

using (StreamReader sr = new StreamReader("filename.txt"))
{
    ...
}

リストに名前を付けてファイルを保存しようとしている場合は、辞書を使用することをお勧めします。

Dictionary<string, string> Files = new Dictionary<string, string>();

using (StreamReader sr = new StreamReader("filename.txt"))
{
   string total = "";
   string line;
   while ((line = sr.ReadLine()) != null)
   {
      total += line;
   }
   Files.Add("filename.txt", line);
}

それらにアクセスするには:

Console.WriteLine("Filename.txt has: " + Files["filename.txt"]);

または、StreamReader を取得したい場合は、ファイル テキストではなく、以下を使用できます。

Dictionary<string, StreamReader> Files = new Dictionary<string, StreamReader>();

using (StreamReader sr = new StreamReader("filename.txt"))
{
    Files.Add("filename.txt", sr);
}
于 2013-10-26T18:53:54.967 に答える