目录文件在C#中以逗号分隔的值

时间:2017-03-17 02:22:38

标签: c# asp.net

我有目录@“c:\ dom \”,其中我有超过100个excel文件。 我需要以下面的格式(CSV)

返回所有excel文件路径

@"C:\dom\dom1.xlsx", @"C:\dom\dom2.xlsx", @"C:\dom\dom3.xlsx", . . . @"C:\dom\dom100.xlsx"

我尝试了下面的

 string[] array1 = Directory.GetFiles(@"C:\Users\dom\");
 foreach (string name in array1)
 {
    string.Join(",", name);
 }

没有成功。

4 个答案:

答案 0 :(得分:3)

以下列举文件,然后将它们作为CSV字符串连接。

var filePaths = Directory.EnumerateFiles(@"C:\Users\dom\");
var csv = String.Join("," + Environment.NewLine, filePaths);

请注意,如果您不需要尾随逗号,可以像这样修改加入:

var filePaths = Directory.EnumerateFiles(@"C:\Users\dom\");
var csv = String.Join(Environment.NewLine, filePaths);

答案 1 :(得分:0)

简单难看的解决方案:

    string[] array1 = Directory.GetFiles(@"C:\Users\dom\");
    string csv = String.Empty;
    foreach (string name in array1.Where(x => x.EndsWith("xlsx")))
        csv += name + ",\r\n";

答案 2 :(得分:0)

嗯,你的代码不起作用的原因是因为你错过了一个变量来存储从行string.Join(",", name);返回的结果

所以使用Directory.GetFiles()绝对不是问题。

无论如何,你所需要的只是不超过1行代码。

// to export it into a csv file (1 entry per row)
File.WriteAllText(@"C:\output.csv", string.Join(Environment.NewLine, Directory.GetFiles(@"C:\Users\dom\")));

答案 3 :(得分:0)

使用此功能,只需将文件夹路径作为请求的参数

    public static string GetFilePathConcenated(string folderPath)
    {
        if (Directory.Exists(folderPath){
            string[] fileList = Directory.GetFiles(folderPath);
            return string.Join(",", fileList).TrimEnd(',');
        }
        return string.Empty;
    }