예제 #1
0
 public static long CalculateSize(Folder folder)
 {
     long size = 0;
     foreach (var file in folder.Files) {
         size += file.Size;
     }
     foreach (var sub in folder.Children) {
         size += CalculateSize (sub);
     }
     return size;
 }
예제 #2
0
        public static Folder TraverseFolder(DirectoryInfo di)
        {
            var fsDirs = di.GetDirectories ();
            Folder[] subFolders = new Folder[fsDirs.Length];
            for (var i=0; i< fsDirs.Length; i++) {
                subFolders[i] = TraverseFolder (fsDirs[i]);
            }
            var fsFiles = di.GetFiles ();
            File[] files = new File[fsFiles.Length];

            for (var i=0; i< fsFiles.Length; i++) {
                files[i] = new File(fsFiles[i].Name, fsFiles[i].Length);
            }
            var folder = new Folder(di.Name, files, subFolders);
            Folders [di.FullName] = folder;
            return folder;
        }
예제 #3
0
 public Folder(string name, File[] files, Folder[] children)
 {
     Name = name;
     Files = files;
     Children = children;
 }