Pat*_*ins 2 .net c# io optimization .net-2.0
这是我读取文件的方式:
public static string readFile(string path)
{
StringBuilder stringFromFile = new StringBuilder();
StreamReader SR;
string S;
SR = File.OpenText(path);
S = SR.ReadLine();
while (S != null)
{
stringFromFile.Append(SR.ReadLine());
}
SR.Close();
return stringFromFile.ToString();
}
Run Code Online (Sandbox Code Playgroud)
问题是这么久(.txt文件大约是2.5兆).花了5分多钟.有没有更好的办法?
解决方案
public static string readFile(string path)
{
return File.ReadAllText(path);
}
Run Code Online (Sandbox Code Playgroud)
花了不到1秒...... :)
S = SR.ReadLine();
while (S != null)
{
stringFromFile.Append(SR.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)
值得注意的S是,在初始化之后永远不会设置ReadLine(),因此S != null如果输入while循环,则不会触发条件.尝试:
S = SR.ReadLine();
while (S != null)
{
stringFromFile.Append(S = SR.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)
或使用其他评论之一.
如果需要删除换行符,请使用string.Replace(Environment.NewLine,"")
暂且不谈可怕的变量名称和缺少使用声明(如果有任何例外,你不会关闭文件)应该没问题,当然不应该花5分钟阅读2.5兆.
该文件在哪里?它是在一个片状的网络共享?
顺便说一句,你正在做的和使用File.ReadAllText之间的唯一区别是你正在丢失换行符.这是故意的吗?ReadAllText需要多长时间?