以下方法的返回类型是什么? (T
)
public T GetDirectoryContentsRecursively (string path) { ... }
该方法将读取远程目录的内容,并读取每个子目录的内容以及该对象的每个子目录,依此类推。
我考虑过使用List<object>
,其中object
可能是另一个List<object>
等...但我不希望调用者必须将所有内容都转换为{{1}每次他们想要使用该方法时都会使用。
每个文件必须是FileSystemInfo
,每个目录都是FileInfo
,这两个目录都继承了抽象类DirectoryInfo
。
我无法弄清楚哪种数据类型最适合用来表示这一点。
有什么想法吗?我是否需要制作自己的FileSystemInfo
类型?
编辑:数据将从服务器获取,可能是目录,一次一个。我需要做的是获取这些数据并将其重建为某些,我可以传递给用户。这意味着我不能只传递DirectoryTree
,然后调用其DirectoryInfo
,因为本地计算机上不存在该目录。
答案 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>
所有目录和文件路径。 DirectoryInfo
和FileInfo
是相对昂贵的对象。这一切都取决于目的,你能提供更多信息吗?
答案 2 :(得分:0)
尝试这样的事情:
class MySweetObject {
HashSet fileInfoSet;
HashSet directoryInfoSet;
//逻辑需要按照您认为合适的方式操作文件 //根据需要访问文件所需的逻辑
}
然后将其写为:
public MySweetObject GetDirectoryContentsRecursively(string path){...}
创建一个自定义对象并将其传递给调用者。