2

streamreader を使用して複数のファイルのテキストを文字列に読み込もうとしていますが、現時点では、私のコードでは、別のファイルを読みたいたびに新しい streamreader を作成しています。これは機能しますが、何百回も繰り返すと非常に効率が悪いように見えます。これは非常に簡単な修正であると確信していますが、私はまだプログラミングに慣れていないので、少しの知識をいただければ幸いです。

避けたい非効率的なコードの例:

someloop
{

    using (StreamReader sR = new StreamReader(changingfilename))
    {
      textString = sR.ReadToEnd();

    }

}
4

3 に答える 3

2

ディスクからの読み取りは比較的非常に遅いです。StreamReader のインスタンス化は、比較では無視できます。遅い部分は、new StreamReader() ではなく、ReadToEnd() です。コードが遅すぎる場合は、ディスクから読み取らないようにしてください。

Visual Studio の一部のバージョンにはプロファイラーが同梱されており、どのメソッドがプログラムの cpu/clock 時間を消費しているかを正確に教えてくれます

于 2012-06-25T04:35:57.910 に答える
0

ファイルごとにstramreaderを作成する必要があります。できることは、配列を作成して次のように読み取ることです。

List<string> lstFileNames=new List<string>();
StringBuilder stringBuffer=new StringBuilder();
lstFileNames.Add("File1");
lstFileNames.Add("File2");
for(int i=0;i<lstFiles.Count;i++)
{
     using (StreamReader sR = new StreamReader(lstFiles[i]))
    {
        stringBuffer.Append(sR.ReadToEnd());
    }
}

文字列を追加するためのユーザー文字列ビルダー。

于 2012-06-25T04:28:21.363 に答える
0

より良い方法は、単に .NET にこれを処理させ、File.ReadAllText(yourFileNameAndPath)静的メソッドを使用することです。

于 2012-06-25T04:32:40.357 に答える