请问在asp.net里如何获得某一文件夹的大小,不能使用FSO。

解决方案 »

  1.   

    直接用directory.getfiles
    一个一个文件加起来
    如果有子文件夹需要用到递归
      

  2.   

    用下面的代码:#region

    /// <summary>
    /// 递归读取所有目录大小
    /// </summary>
    /// <param name="FolderPath">文件目录</param>
    /// <param name="size">初始大小</param>
    /// <returns>返回字节</returns>
    private static long FolderSize(string FolderPath,long size )
    {
    long Csize = size;
    string[] Folder = Directory.GetDirectories(FolderPath);
    string[] files = Directory.GetFiles(FolderPath);
    int i = 0;
    for ( i = 0; i < files.Length ; i++ ) 
    {
    try 
    {
    FileAttributes fa = File.GetAttributes( files[i] );
    FileInfo f = new FileInfo( files[i] );
    Console.WriteLine( files[i] + "大小:" + f.Length );
    Csize += f.Length ;
    }
    catch 
    {
    Console.WriteLine( "读取文件失败" );
    }
    num++;
    }

    for ( i = 0; i < Folder.Length ; i++  ) 
    {
    FolderSize( Folder[i],Csize );
    }
    return Csize;
    }


    #endregion调用方法:
    Console.WriteLine( "文件大小:" + FolderSize(Path,0) );
      

  3.   

    注意:如果你不需要获得该目录下的文件总数,可以把num++;这个变量去掉...
      

  4.   

    看来是没有什么好办法了,只能用获得所有文件方式然后相加其各自大小来完成计算了,有些麻烦。而Fso就省事多了
    set f = Server.CreateObject("Scripting.FileSystemObject")
    f.GetFolder(Path).Size
    这样就得到了文件夹的大小了.
    不知道.Net有没有更好的方法来实现,而且不用这个FSO