File.ReadAllLines的两个.text文件,这是否可以放在一个列表中

本文关键字:一个 是否 列表 ReadAllLines 两个 text File 文件 | 更新日期: 2023-09-27 18:00:09

所以我有一个包含文本文件的列表,但现在我想。将2个文本文件添加到1个单一文件中。添加。这对我来说很难解释,但希望你能理解这个例子:

List.Add(File.ReadAllLines("C:''Users''glb1.txt" + "C:''Users''glb2.txt").ToList());//This isnt possible??
List.Add(File.ReadAllLines("C:''Users''abc.txt").ToList());
List.Add(File.ReadAllLines("C:''Users''klm1.txt" + "C:''Users''klm2.txt").ToList());//This isnt possible??

那么,是否可以将两个文本文件添加到列表中的一个[]中?

File.ReadAllLines的两个.text文件,这是否可以放在一个列表中

您可以使用File.ReadLines+Enumerable.Concat+List.AddRange:

var allLines = File.ReadLines(path1)
       .Concat(File.ReadLines(path2))
       .Concat(File.ReadLines(path3))
       .Concat(File.ReadLines(path4))
       .Concat(File.ReadLines(path5));
List.AddRange( allLines );

当然可以。使用AddRange:

List.AddRange(File.ReadAllLines("C:''Users''glb1.txt"));
List.AddRange(File.ReadAllLines("C:''Users''glb2.txt"));
List.AddRange(File.ReadAllLines("C:''Users''abc.txt"));
List.AddRange(File.ReadAllLines("C:''Users''klm1.txt"))
List.AddRange(File.ReadAllLines("C:''Users''klm2.txt"))

一次使用一个路径。注意,在添加它们

之前,不需要调用ToList

或者,更好的是,使用LINQ:

var files = new []{"glb1.txt", "glb2.txt", "abc.txt", "klm1.txt", "klm2.txt"}; //An array of all the file names you want
var mylist = files.SelectMany(p=>File.ReadAllLines(Path.Combine(@"C:'Users", p))).ToList(); //This list will now hold every line from each of the files

SelectMany的工作原理与Select类似,但它也会将列表扁平化为一个列表。这样做的目的是,对于files中的每个文件名,它将读取完整的路径,并选择(返回)行列表。SelectMany会将所有行合并为一个列表。

如果需要,您现在可以编写List.AddRange(mylist)(或者,更好的是,您可以用List = ...替换var mylist = ...)。

此外,您应该小心地将List命名为"列表",因为这可能会造成混淆。使用类型名称以外的其他名称,例如"myList",总是一个好主意。

相关文章: