如何解决计算具有特定扩展名的文件数
:)
所以我有一个硬件(我必须从控制台运行项目):我必须计算特定目录中子目录的数量(用户以这种方式写" [path] [extension] [-r] "
)
因此,如果用户写目录而不写扩展名,我的程序只会计算子目录的数量。
但是,如果用户编写了参数,例如.exe,.txt,.cs,则我有可以计算特定目录中具有此特定扩展名的文件的数量,并返回该数字。
所以,第一部分一切都很好-我的程序可以正常工作,并且递归地(如果我写参数-r)计算子目录的数量(如果我不写)。 问题是对带有扩展名的文件进行计数。
这是我计算子目录的功能:
class Data
{
public string curDir = Directory.GetCurrentDirectory();
public string Extension = "";
public bool isRecursive;
}
public static int CountDir(Data data)
{
string[] dirs = Directory.GetDirectories(data.curDir);
int res = dirs.Length;
int resFiles = files.Length;
try
{
if (data.isRecursive)
{
foreach (string subdir in dirs)
{
Data d = new Data();
d.curDir = subdir;
d.Extension = data.Extension;
d.isRecursive = data.isRecursive;
res += CountDir(d);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
return res;
}
所以我试图用这种方法做类似的事情,但是对于文件,我有点困惑:
string[] files = Directory.GetFiles(data.curDir);
int resFiles = files.Length;
foreach (string ext in files)
{
FileInfo fi = new FileInfo(ext);
if (data.Extension != "")
{
if (fi.Extension == data.Extension)
{
//res = 0;
//++res;
//what am I supposed to do here?..
}
}
}
我还想知道是否可以用相同的方法(CountDir)来执行此操作。 提前非常感谢您!
编辑:我了解SearchOptions.AllDirectories方法,但我事先不知道哪个扩展名用户将编写
解决方法
我将文件计数逻辑放在自己的方法中,因为目标是获取特定目录而不是所有子目录的文件数。这是一个基于您的示例代码的示例:
public static int countFiles(Data data)
{
string[] files = new string[0];
try
{
files = Directory.GetFiles(data.curDir,$"*{data.Extension}");
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
return files.Length;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。