目录树数据类型?

时间:2010-09-24 12:34:25

标签: c# .net-4.0 types filesystems directory-structure

以下方法的返回类型是什么? (T

public T GetDirectoryContentsRecursively (string path) { ... }

该方法将读取远程目录的内容,并读取每个子目录的内容以及该对象的每个子目录,依此类推。

我考虑过使用List<object>,其中object可能是另一个List<object>等...但我不希望调用者必须将所有内容都转换为{{1}每次他们想要使用该方法时都会使用。

每个文件必须是FileSystemInfo,每个目录都是FileInfo,这两个目录都继承了抽象类DirectoryInfo

我无法弄清楚哪种数据类型最适合用来表示这一点。

有什么想法吗?我是否需要制作自己的FileSystemInfo类型?

编辑:数据将从服务器获取,可能是目录,一次一个。我需要做的是获取这些数据并将其重建为某些,我可以传递给用户。这意味着我不能只传递DirectoryTree,然后调用其DirectoryInfo,因为本地计算机上不存在该目录。

3 个答案:

答案 0 :(得分:1)

如果您使用.net 4.0

,请参阅SortedSet的以下信息

http://msdn.microsoft.com/en-us/library/dd412070.aspx

和.net 4.0中的Directory.Enumeration是针对您正在执行的任务而设计的。

答案 1 :(得分:1)

我想也许这种方法是错误的,你想用树结构实现什么,你不能在需要的时候使用API​​目录?

如果只想在远程目录中遍历文件夹/文件结构,则无需构建自己的内存中表示来执行此操作。如果要渲染结构,只需抓住顶层,然后根据需要加载其他级别。

如果您真的想沿着这条路走下去,那么您可以返回IEnumerable<string>所有目录和文件路径。 DirectoryInfoFileInfo是相对昂贵的对象。这一切都取决于目的,你能提供更多信息吗?

答案 2 :(得分:0)

尝试这样的事情:

  

class MySweetObject {
    HashSet fileInfoSet;
    HashSet directoryInfoSet;
    //逻辑需要按照您认为合适的方式操作文件     //根据需要访问文件所需的逻辑
  }

然后将其写为:

  

public MySweetObject GetDirectoryContentsRecursively(string path){...}

创建一个自定义对象并将其传递给调用者。