C# 报告目录统计数据
我需要创建一个小型C#控制台应用程序,以便在本地计算机上的目录上运行报告。报告将是excel文档,包含3列,包括:列中每个文件夹的名称、文件夹是否包含任何数据、文件夹是否包含上次更新时的数据。我目前的想法是一个小型C#控制台应用程序,它读取每个文件夹中的目录,并执行这些测试,一次创建一行。我对C#相当陌生,不知道如何才能做到这一点。我尝试了以下代码:C# 报告目录统计数据,c#,asp.net,excel,C#,Asp.net,Excel,我需要创建一个小型C#控制台应用程序,以便在本地计算机上的目录上运行报告。报告将是excel文档,包含3列,包括:列中每个文件夹的名称、文件夹是否包含任何数据、文件夹是否包含上次更新时的数据。我目前的想法是一个小型C#控制台应用程序,它读取每个文件夹中的目录,并执行这些测试,一次创建一行。我对C#相当陌生,不知道如何才能做到这一点。我尝试了以下代码: static void Main(string[] args) { string[] filePaths
static void Main(string[] args)
{
string[] filePaths = Directory.GetFiles(@"C:/TestFolder/");
foreach (string value in filePaths)
{
Console.WriteLine(value);
}
}
谢谢您应该:
- 使用
和DirectoryInfo
而不是FileInfo
和Directory
(提供的信息不仅仅是文件名)File
- 使用
而不是枚举文件
(枚举文件而不是一次检索所有文件)获取文件
- 对每个检索到的
执行递归操作,其中FileInfo
属性中包含
属性目录
我在这里不做任何清理输出的工作,而是使用一个简单的字符串数组来清理内容,但是可以随意清理 不考虑子文件夹:
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo("c:\\offTopic");
var data = di.EnumerateDirectories()
.Select(a =>
new string[]
{ a.Name,
"" + (a.EnumerateFiles().Count() > 0),
"" + a.EnumerateFileSystemInfos().Max(b => b.LastWriteTime)
});
foreach (var x in data)
{
Console.WriteLine(string.Join(",", x));
}
}
然后,您必须将这些内容写入一个后缀为CSV(逗号分隔值)的文件,该文件可以由Excel打开 是否必须递归检查子文件夹?没有子文件夹。我只需要记录顶层文件夹的名称,并检查它们是否为空或是否包含数据。这将返回一个System.InvalidOperationException was unhandled Message=Sequence不包含元素异常。知道为什么吗?@Bradley也许你的文件夹里没有目录?只要目录存在,我就一直在为我工作。
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo("c:\\offTopic");
var data = di.EnumerateDirectories()
.Select(a =>
new string[]
{ a.Name,
"" + (a.EnumerateFiles().Count() > 0),
"" + a.EnumerateFileSystemInfos().Max(b => b.LastWriteTime)
});
foreach (var x in data)
{
Console.WriteLine(string.Join(",", x));
}
}