上面是我的数据库结构,我想求得指定文件夹下(包括子文件夹)所有文件的大小。ASP。NET(C#)
求算法
DirID 文件夹或文件编号   ParentID 父目录ID  Contain 文件大小    Flag 是否为文件夹在线等  急

解决方案 »

  1.   

    1.首先获取指定文件夹的 dirid好吗;
    2.然后用递归的方法检索每条记录;如果该记录的父目录为dirid且另行为文件则指定目录的容量增加该文件的大小
    3.如果为文件夹则循环执行2
      

  2.   

    记得碰到过FileOrFoder对象,利用这个对象可以实现的void FindFile( Directory d )  

    FileOrFolders = d.GetFileOrFolders(); 
    foreach( FileOrFolder fof in FileOrFolders )  

    if( fof is File )  
    You Found a file;  
    else if ( fof is Directory )  
    FindFile( fof );  
    }  
    }  利用这段功能相似的代码,相信可以解决你的问题!
      

  3.   

    没有必要用数据库来做,你用文件系统的FILE和Directory类就可以实现。
      

  4.   

    using System;
    using System.IO;class Test 
    {
        public static void Main() 
        {
            // Specify the directories you want to manipulate.
            string path = @"c:\MyDir";
            string target = @"c:\TestDir";        try 
            {
                // Determine whether the directory exists.
                if (!Directory.Exists(path)) 
                {
                    // Create the directory it does not exist.
                    Directory.CreateDirectory(path);
                }            if (Directory.Exists(target)) 
                {
                    // Delete the target to ensure it is not there.
                    Directory.Delete(target, true);
                }            // Move the directory.
                Directory.Move(path, target);            // Create a file in the directory.
                File.CreateText(target + @"\myfile.txt");            // Count the files in the target directory.
                Console.WriteLine("The number of files in {0} is {1}",
                    target, Directory.GetFiles(target).Length);
            } 
            catch (Exception e) 
            {
                Console.WriteLine("The process failed: {0}", e.ToString());
            } 
            finally {}
        }
    }
      

  5.   

    不好意思,帖错。
    // For Directory.GetFiles and Directory.GetDirectories
    // For File.Exists, Directory.Exists
    using System;
    using System.IO;
    using System.Collections;public class RecursiveFileProcessor 
    {
        public static void Main(string[] args) 
        {
            foreach(string path in args) 
            {
                if(File.Exists(path)) 
                {
                    // This path is a file
                    ProcessFile(path); 
                }               
                else if(Directory.Exists(path)) 
                {
                    // This path is a directory
                    ProcessDirectory(path);
                }
                else 
                {
                    Console.WriteLine("{0} is not a valid file or directory.", path);
                }        
            }        
        }
        // Process all files in the directory passed in, recurse on any directories 
        // that are found, and process the files they contain.
        public static void ProcessDirectory(string targetDirectory) 
        {
            // Process the list of files found in the directory.
            string [] fileEntries = Directory.GetFiles(targetDirectory);
            foreach(string fileName in fileEntries)
                ProcessFile(fileName);        // Recurse into subdirectories of this directory.
            string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
            foreach(string subdirectory in subdirectoryEntries)
                ProcessDirectory(subdirectory);
        }    // Insert logic for processing found files here.
        public static void ProcessFile(string path) 
        {
            Console.WriteLine("Processed file '{0}'.", path);        
        }
    }
      

  6.   

    嗯,还是改成FileInfo吧,因为File没有属性,用FileInfo直接用length求出文件大小。
      

  7.   

    谢谢 可能你们没明白我的意思, 我现在做的是 每一个用户就一个文件夹,这个用户 所谓的我的图片 和我的文档,在实际中不是存在的,每一个用户上传的所有文件都存储在以用户名为文件夹名的这一个文件夹下,在显示时,文件夹和文件信息都在数据库中的,用Windows 自带的类 没办法用。 只能自己写方法,我知道可以用递归,但是不知道怎么写。上面是我的数据库结构。