是否有必要创建多个streamreader实例来读取多个文件?

时间:2012-06-25 04:19:28

标签: c# performance file streamreader

我想使用streamreader将多个文件的文本读成字符串,但截至目前,我的代码让我每次想要读取不同的文件时都会创建一个新的streamreader。这有效,虽然重复了数百次,但效率似乎非常低。我确信这是一个非常简单的解决方案,但我仍然是编程的新手,因此我将非常感谢您的一些知识。

我想避免的低效代码示例:

someloop
{

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

    }

}

3 个答案:

答案 0 :(得分:2)

从磁盘读取速度相对较慢。比较时,StreamReader的实例化可以忽略不计。缓慢的部分是ReadToEnd(),而不是新的StreamReader()。如果代码太慢,请尽量避免从磁盘读取。

某些版本的Visual Studio附带一个分析器,它会告诉您哪些方法花费了您的程序的CPU /时钟时间

答案 1 :(得分:0)

你必须为每个文件创建一个streamreader,你可以做的是 创建一个数组并像这样读取它

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

用于追加字符串的用户字符串构建器。

答案 2 :(得分:0)

更好的方法是让.NET使用File.ReadAllText(yourFileNameAndPath)静态方法来处理这个问题。