C# 迭代文件系统并将结果写入CSV文件
我正在编写一个程序,迭代文件树,现在我需要它将结果写入csv文件。在写入csv文件之前,要求对内容进行字母数字排序。所以我一直在把文件保存到一个列表中C# 迭代文件系统并将结果写入CSV文件,c#,csv,iteration,loops,export-to-csv,C#,Csv,Iteration,Loops,Export To Csv,我正在编写一个程序,迭代文件树,现在我需要它将结果写入csv文件。在写入csv文件之前,要求对内容进行字母数字排序。所以我一直在把文件保存到一个列表中 FileInfo fi = new FileInfo(file); fileList.Add( new Record { fileName = fi.Name, fileSize = fi.Length }); 如果记录是一个类: public class Record { public long fileSize {
FileInfo fi = new FileInfo(file);
fileList.Add( new Record {
fileName = fi.Name,
fileSize = fi.Length
});
如果记录是一个类:
public class Record
{
public long fileSize { get; set; }
public string fileName { get; set; }
}
然后我在做一个简单的老排序()。现在如何将此列表写入csv?
我欢迎任何更好的方法来完成整个过程
有没有一种方法可以让我边走边将结果写入csv,然后按字母数字对csv进行排序?基本上,程序必须对其进行排序,而不是用户
csv也需要标题,如果你能让我继续这样做的话。只要你能将所有数据放入内存中,你最好保留所有数据并在内存中排序,而不是将其写入文件。对文件中的数据进行排序的概念通常通过“将数据读入内存,对其进行排序,然后再次将其写出来”来解决 至于编写CSV文件,其实并不难。我喜欢使用StringBuilder为每一行添加每个字段,然后一旦有了一行,我就将该行附加到文件中。对于头文件,您可以在适当的情况下对其进行硬编码,或者从任何源文件(如果是动态的)获取它们。你不知道如何写入文件吗?我猜File.WriteAllText()和File.AppendText()方法将是实现这一点所需的全部方法
正如您所问,只是一个一般提示,与其将项目添加到列表中,还不如将它们添加到SortedList中,以便在您进行排序时对它们进行排序。然后,当您完成后,您只需一次获取一个,它们就已经有序了。您可以使用LINQ进行排序,使用
StreamWriter进行文件创建
using (var writer = new StreamWriter(@"C:\files.csv")) {
writer.WriteLine("Name,Size"); // Header
var query = fileList.OrderBy(r => r.fileName);
foreach (Record record in query) {
writer.WriteLine("\"{0}\",{1}", record.fileName, record.fileSize);
}
}
请注意,如果文件名中有逗号(,)的话,我将文件名用双引号(“)括起来。双引号本身不是Windows中文件名的有效字符,因此应该不会有问题。fileList.OrderByDescending(f=>f.fileName);
您也可以执行var csv=string.Join(“,,fileList.OrderByDescending(f=>f.fileName))代码>您在编写CSV时遇到了什么问题?你试过什么?@JohnSaunders我以前从来没有试过。我看了一些例子,他们似乎在csv上写了一个通用列表,我正在努力写我的列表,而不是编写到示例中的通用列表。向我们展示您尝试过的内容和不起作用的内容。我们会帮你的。否则,这相当于我们为你做你的工作。