从文件读取不够快,我将如何加快速度?

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秒...... :)

Mar*_*iep 8

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,"")


Jon*_*eet 6

暂且不谈可怕的变量名称和缺少使用声明(如果有任何例外,你不会关闭文件)应该没问题,当然不应该花5分钟阅读2.5兆.

该文件在哪里?它是在一个片状的网络共享?

顺便说一句,你正在做的和使用File.ReadAllText之间的唯一区别是你正在丢失换行符.这是故意的吗?ReadAllText需要多长时间?


pia*_*an0 6

return System.IO.File.ReadAllText(path);
Run Code Online (Sandbox Code Playgroud)