检查目录结构
Check directory structure
我正在尝试检查目录的格式是否为
例如:
这应该是有效的:
D:\TESTDIR\FOLDER1\FOLDER2\Somerandomfiles
这是无效的:
D:\TESTDIR\FOLDER1\Somerandomfiles
基本上我需要确保每个文件夹里面都应该有一个子文件夹。请注意,单个文件夹可能包含多个子文件夹。然后子文件夹将包含文本 files/pdf 文件等文件
//not sure how/where to place to check if folder has a subfolder
var _dir = Directory.GetDirectories(@"D:\TESTDIR");
foreach(var _folder1 in _dir)
{
// check if contains folder2? if not
// MessageBox.Show(folder1name);
var _folder2 = Directory.GetDirectories(_folder1);
foreach (var _path in _folder2)
{
// do something
}
}
以下是我将如何开始:
var query =
from dir in Directory.GetDirectories(@"D:\TESTDIR")
select new
{
dir,
valid =
Directory.GetDirectories(dir).Any()
&& Directory.GetDirectories(dir).All(child => Directory.GetFiles(child).Any())
};
这将检查 @"D:\TESTDIR"
中的每个目录并确保每个目录至少有一个子文件夹并且每个子文件夹至少有一个文件。
你几乎做对了,我只是稍微修改了你的代码:
var dir = Directory.GetDirectories(@"D:\TESTDIR");
foreach(var folder1 in dir)
{
var folder2 = Directory.GetDirectories(folder1);
// If no directories are found in that subfolder, skip it.
// Basically it would work the same without if, as loop
// would not run even one iteration, but it's more readable.
if(folder2.Count == 0) continue;
foreach (var path in folder2)
{
var files = Directory.GetFiles(path);
// Same as above, check if there are any files.
if(files.Count == 0) break;
// Do some work
}
}
我正在尝试检查目录的格式是否为
例如:
这应该是有效的: D:\TESTDIR\FOLDER1\FOLDER2\Somerandomfiles
这是无效的: D:\TESTDIR\FOLDER1\Somerandomfiles
基本上我需要确保每个文件夹里面都应该有一个子文件夹。请注意,单个文件夹可能包含多个子文件夹。然后子文件夹将包含文本 files/pdf 文件等文件
//not sure how/where to place to check if folder has a subfolder
var _dir = Directory.GetDirectories(@"D:\TESTDIR");
foreach(var _folder1 in _dir)
{
// check if contains folder2? if not
// MessageBox.Show(folder1name);
var _folder2 = Directory.GetDirectories(_folder1);
foreach (var _path in _folder2)
{
// do something
}
}
以下是我将如何开始:
var query =
from dir in Directory.GetDirectories(@"D:\TESTDIR")
select new
{
dir,
valid =
Directory.GetDirectories(dir).Any()
&& Directory.GetDirectories(dir).All(child => Directory.GetFiles(child).Any())
};
这将检查 @"D:\TESTDIR"
中的每个目录并确保每个目录至少有一个子文件夹并且每个子文件夹至少有一个文件。
你几乎做对了,我只是稍微修改了你的代码:
var dir = Directory.GetDirectories(@"D:\TESTDIR");
foreach(var folder1 in dir)
{
var folder2 = Directory.GetDirectories(folder1);
// If no directories are found in that subfolder, skip it.
// Basically it would work the same without if, as loop
// would not run even one iteration, but it's more readable.
if(folder2.Count == 0) continue;
foreach (var path in folder2)
{
var files = Directory.GetFiles(path);
// Same as above, check if there are any files.
if(files.Count == 0) break;
// Do some work
}
}