【发布时间】:2014-08-22 20:34:09
【问题描述】:
我有一些类,它们查看目录和子目录以检查这些文件夹和文件的结构是否符合类要求。例如。我有一个 JPEG 类,它在所有子目录中查找任何 .jpeg。有些类甚至更复杂,其中一些目录和子目录需要有特定的名称,并且应该包含一些具有指定扩展名的文件。
因此我目前遇到的问题是我需要多次读取文件系统来进行这些计算,因为类有不同的要求,无法在一个循环中解决。
到目前为止,我正在做的事情:我已经使用 Directory.GetFiles(path) 和 Directory.GetDirectories(path) 为每个类在文件系统上实现了一个循环,并检查我的类是否可以读取该结构
我的问题是:我怎样才能提高我的表现。如果我可以将文件系统(来自所选路径的目录和子目录)存储到我的内存中,我认为这将是一个很大的性能提升,也许是在树结构中以避免多个文件系统调用?这是最好的行为吗?还是您认为这不会带来性能提升?我还有其他方法可以提高性能吗?
如果树是最佳解决方案 - 您将如何实施?
public class TreeNode
{
List<TreeNode> nodes;
FileInfo currentFileInfo;
DirectoryInfo currentDirectoryInfo;
}
这种结构适合我的问题吗?
问候
【问题讨论】:
-
相反的组织怎么样 - 浏览每个文件和目录以及每个处理类的每个文件进程/签入循环。
-
我试过了,但正如我所提到的,这非常困难,因为每个处理类都需要不同的信息。其中一些只需要一个文件,另一些则需要整个目录、子目录或其他属性。我需要以某种方式存储这些信息,以便以后继续。
标签: c# performance loops filesystems