对于每个目录(包括子目录),我想将其中的文件放入列表中。
我知道有类似的东西:
string[] files;
files = Directory.GetFiles(fbd.SelectedPath, "*", SearchOption.AllDirectories);
事情是我想在每个目录(或子目录)之后停止并以某种方式对其中的文件进行排序。上面的选项只是简单地获取所有文件。
答案 0 :(得分:2)
我想在每个目录(或子目录)之后停止,并以某种方式对其中的文件进行排序。
如果我明白你想要什么,你需要这样的东西:
public class DirectoryFiles
{
public DirectoryFiles(string currentDir)
{
CurrentDir = currentDir;
Files = Directory.GetFiles(currentDir, "*", SearchOption.TopDirectoryOnly)
.OrderBy(o=> o);
Directories = Directory.GetDirectories(currentDir)
.Select(c => new DirectoryFiles(c))
.OrderBy(o=> o.CurrentDir);
}
public string CurrentDir { get; private set; }
//// list of files in this directory
public IEnumerable<string> Files { get; private set; }
//// list of directories in this directory
public IEnumerable<DirectoryFiles> Directories { get; private set; }
}
用途:
var d = new DirectoryFiles(fbd.SelectedPath);
答案 1 :(得分:1)
您可以这样做:
string[] fols = files.GroupBy(f => Path.GetDirectoryName(f)).ToArray();
for(int i=0;i<fols.Length;i++){
//You have each folders files in fols[i] nd you can sort it
}
答案 2 :(得分:0)
您可以对文件进行排序:
首先,按名称使目录中的所有文件都紧挨着。
其次,通过您的其他参数(假设文件大小)
像这样使用:
files = Directory.GetFiles(fbd.SelectedPath, "*", SearchOption.AllDirectories)
.OrderBy(f => new FileInfo(f).FileName).ThenBy(f => new FileInfo(f).Length);
希望这有帮助