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