无论如何要优化这个 bc,它需要永远

我已经编写了一些代码,它应该为我在一个文件中逐行存储字符串数组中的一些字符串,遗憾的是我必须为一个数组中的大约 200k 个字符串执行此操作,这需要我永远......


foreach (var file in fileArray) {


    //    Console.WriteLine(file);


        string sub = file.Substring(49,file.Length - 49);

        using (StreamWriter sw = File.AppendText(folder + ".tfcs"))

        {

            sw.WriteLine(sub);   

        }

        indexfiles++;

        Console.Clear();

        Console.WriteLine("Scanning Folder:");

        Console.WriteLine(folder);

        Console.WriteLine("Filesfound:" + fileArray.Length);

        Console.WriteLine("Fileswritten to Database:" + indexfiles);

        }


}

有什么办法可以改善这一点吗?


PS我已经获得了已经写入文件的字符串数量的进度......


30秒到达战场
浏览 91回答 1
1回答

aluckdog

您在循环的每次迭代中打开和关闭文件。这几乎可以肯定是问题所在,或者至少是部分问题。取而代之的是,将其打开一次:using (var writer = File.AppendText(folder + ".tfcs")){    foreach (var file in fileArray)    {        writer.WriteLine(file.Substring(49, file.Length - 49));        indexFiles++;    }}Console.Clear();Console.WriteLine("Scanning Folder:");Console.WriteLine(folder);Console.WriteLine("Files found:" + fileArray.Length);Console.WriteLine("Files written to Database:" + indexFiles);我还将控制台输出移到了最后——在每次迭代中清除控制台并写入它几乎肯定会大大减慢速度。如果你需要一些进度报告,我会每 100 行或类似的东西做一次。
打开App,查看更多内容
随时随地看视频慕课网APP