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);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |