Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据文件名和/或扩展名检索文件夹的所有文件大小?_C#_Arrays_Linq - Fatal编程技术网

C# 如何根据文件名和/或扩展名检索文件夹的所有文件大小?

C# 如何根据文件名和/或扩展名检索文件夹的所有文件大小?,c#,arrays,linq,C#,Arrays,Linq,我有一个表单,用户可以在其中导航到特定文件夹。他们导航到的文件夹中会有许多文件夹,在几个级别的文件夹中会有一个名为“file.zip”的zip文件。这意味着将会有很多文件夹,里面都有一个“file.zip”。我想扫描所选文件夹中所有这些“file.zip”文件。我最终将只寻找那些大小为0kb或为空的“file.zip”文件。我想我需要使用LINQ返回父文件夹中的文件列表,如下所示: string[] files = Directory.GetFiles(txtbxOldFolder.Text)

我有一个表单,用户可以在其中导航到特定文件夹。他们导航到的文件夹中会有许多文件夹,在几个级别的文件夹中会有一个名为“file.zip”的zip文件。这意味着将会有很多文件夹,里面都有一个“file.zip”。我想扫描所选文件夹中所有这些“file.zip”文件。我最终将只寻找那些大小为0kb或为空的“file.zip”文件。我想我需要使用LINQ返回父文件夹中的文件列表,如下所示:

 string[] files = Directory.GetFiles(txtbxOldFolder.Text)
                      .Select(f => Path.GetFiles(f))
                      .ToArray();

但我还需要它们各自的大小,以便以后可以创建任何zip文件的目录列表,这些文件为空或显示大小为0kb。我想也许有一种方法可以根据名称(file.zip)返回目录和每个文件的大小因此,我可以稍后遍历数组,并为那些空的/大小为0kb的file.zip创建目录日志。

我不确定如何验证这是否有效,因为除非我误解了var调用,否则它似乎不会实际写入数组。我需要将此信息写入日志文件并打开它,以下是我的操作方法,以下是我得到的信息。File.writealText(folderLog,files.ToString());它在我的日志中显示“System.IO.FileInfo[]”files变量包含一个类型为“FileInfo”的对象数组,这些对象表示名为“file.zip”的文件,在文件夹中长度为零。要打开其中任何一个,请使用FileInfo.open()、FileInfo.OpenRead()或FileInfo.OpenText()。全名包含文件的完整路径。长度包含文件长度。
var directory = @"c:\myfolder";
var files = Directory.GetFiles(directory, "file.zip", SearchOption.AllDirectories)
.Select(name => new FileInfo(name))
.Where(f => f.Length == 0).ToArray();