我想使用streamreader将多个文件的文本读成字符串,但截至目前,我的代码让我每次想要读取不同的文件时都会创建一个新的streamreader。这有效,虽然重复了数百次,但效率似乎非常低。我确信这是一个非常简单的解决方案,但我仍然是编程的新手,因此我将非常感谢您的一些知识。
我想避免的低效代码示例:
someloop
{
using (StreamReader sR = new StreamReader(changingfilename))
{
textString = sR.ReadToEnd();
}
}
答案 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)
静态方法来处理这个问题。