快速文本阅读器c#

Jon*_*mni -1 c# c#-4.0

我使用以下代码来读取和组合一个字符串中的文本数:

            foreach (string path in filePaths)
            {


                StreamReader singfile = new StreamReader(path);

                string  file_text = singfile.ReadToEnd();
                combinetexts += file_text + "\n";

                fs.Close();

            }
Run Code Online (Sandbox Code Playgroud)

据我所知,字符串combinetexts将复制n次文件路径的数量.是否可以使用字符串生成器来执行此操作?我尝试过,但事实并非如此.提前致谢.

Jon*_*eet 8

这是一个简短的LINQ方式:

string result = string.Join("\n", filePaths.Select(x => File.ReadAllText(x)));
Run Code Online (Sandbox Code Playgroud)

或者使用C#4(它更好地处理类型推断和方法组转换):

string result = string.Join("\n", filePaths.Select(File.ReadAllText));
Run Code Online (Sandbox Code Playgroud)

如果您使用的是.NET 3.5,则需要创建一个字符串数组,因为string.Join没有那么多的重载:

string result = string.Join("\n", filePaths.Select(x => File.ReadAllText(x))
                                           .ToArray());
Run Code Online (Sandbox Code Playgroud)

这有读取所有的缺点,所有的文件进行串联,固然之前-但它仍然比原来的代码重复拼接好.它也可能比使用更有效StringBuilder- 这取决于string.Join实现.

请参阅我的文章,StringBuilder了解原始代码为何效率低下.

编辑:请注意,这并没有包括尾随\n在最后.如果你真的想添加它,你可以:)