Expand|Select|Wrap|Line Numbers
- using System;
- using System.IO;
- using System.Reflection;
- using System.Runtime.ConstrainedExecution;
- using System.Runtime.InteropServices;
- using Microsoft.Win32.SafeHandles;
- public class MainClass
- {
- [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
- static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
- out ulong lpFreeBytesAvailable,
- out ulong lpTotalNumberOfBytes,
- out ulong lpTotalNumberOfFreeBytes);
- public static long getFreeSpace(string path)
- {
- ulong freeBytesAvail;
- ulong totalNumOfBytes;
- ulong totalNumOfFreeBytes;
- if (!GetDiskFreeSpaceEx(path, out freeBytesAvail, out totalNumOfBytes, out totalNumOfFreeBytes))
- {
- Console.Error.WriteLine("Error occurred: {0}",
- Marshal.GetExceptionForHR(Marshal.GetLastWin32Error()).Message);
- return 0;
- }
- else
- {
- return Convert.toInt64(freeBytesAvail / (1024 * 1024));
- }
- }
- }