74 lines
2.0 KiB
C#
74 lines
2.0 KiB
C#
/*********************************************************************************************
|
|
* Copyright 2005 - Volian Enterprises, Inc. All rights reserved.
|
|
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
|
* ------------------------------------------------------------------------------
|
|
* $Workfile: DirSpace.cs $ $Revision: 1 $
|
|
* $Author: Kathy $ $Date: 3/08/05 1:46p $
|
|
*
|
|
* $History: DirSpace.cs $
|
|
*
|
|
* ***************** Version 1 *****************
|
|
* User: Kathy Date: 3/08/05 Time: 1:46p
|
|
* Created in $/LibSource/Utils
|
|
* Approval
|
|
*********************************************************************************************/
|
|
using System;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Utils
|
|
{
|
|
/// <summary>
|
|
/// Summary description for DirSpace.
|
|
/// </summary>
|
|
public class DirSpace
|
|
{
|
|
static DirSpace()
|
|
{
|
|
}
|
|
|
|
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
|
|
public static extern bool GetDiskFreeSpaceEx(
|
|
[MarshalAs(UnmanagedType.LPTStr)] string lpDirectoryName,
|
|
ref long lpFreeBytesAvailable,
|
|
ref long lpTotalNumberOfBytes,
|
|
ref long lpTotalNumberOfFreeBytes);
|
|
|
|
public static long Free()
|
|
{
|
|
string curdir = Environment.CurrentDirectory;
|
|
long freeBytes = new long();
|
|
long totalFreeBytes = new long();
|
|
long totalBytes = new long();
|
|
|
|
bool x = GetDiskFreeSpaceEx(curdir, ref freeBytes, ref totalFreeBytes, ref
|
|
totalBytes);
|
|
return totalFreeBytes;
|
|
}
|
|
|
|
private static long DirSize(DirectoryInfo d)
|
|
{
|
|
long Size = 0;
|
|
// Add file sizes.
|
|
FileInfo[] fis = d.GetFiles();
|
|
foreach (FileInfo fi in fis)
|
|
{
|
|
Size += fi.Length;
|
|
}
|
|
// Add subdirectory sizes.
|
|
DirectoryInfo[] dis = d.GetDirectories();
|
|
foreach (DirectoryInfo di in dis)
|
|
{
|
|
Size += DirSize(di);
|
|
}
|
|
return(Size);
|
|
}
|
|
|
|
public static long Get(string TheDirectory)
|
|
{
|
|
DirectoryInfo d = new DirectoryInfo(TheDirectory);
|
|
return DirSize(d);
|
|
}
|
|
}
|
|
}
|