74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System.IO;
							 | 
						|||
| 
								 | 
							
								using System.Threading;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								public static class SRFileUtil
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								#if !UNITY_WEBPLAYER && !NETFX_CORE
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static void DeleteDirectory(string path)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        try
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            Directory.Delete(path, true);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        catch (IOException)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            Thread.Sleep(0);
							 | 
						|||
| 
								 | 
							
								            Directory.Delete(path, true);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#endif
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /// <summary>
							 | 
						|||
| 
								 | 
							
								    /// Returns the human-readable file size for an arbitrary, 64-bit file size
							 | 
						|||
| 
								 | 
							
								    /// The default format is "0.### XB", e.g. "4.2 KB" or "1.434 GB"
							 | 
						|||
| 
								 | 
							
								    /// </summary>
							 | 
						|||
| 
								 | 
							
								    /// <param name="i"></param>
							 | 
						|||
| 
								 | 
							
								    /// <remarks>http://stackoverflow.com/a/281684/147003</remarks>
							 | 
						|||
| 
								 | 
							
								    /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								    public static string GetBytesReadable(long i)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        var sign = (i < 0 ? "-" : "");
							 | 
						|||
| 
								 | 
							
								        double readable = (i < 0 ? -i : i);
							 | 
						|||
| 
								 | 
							
								        string suffix;
							 | 
						|||
| 
								 | 
							
								        if (i >= 0x1000000000000000) // Exabyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "EB";
							 | 
						|||
| 
								 | 
							
								            readable = i >> 50;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else if (i >= 0x4000000000000) // Petabyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "PB";
							 | 
						|||
| 
								 | 
							
								            readable = i >> 40;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else if (i >= 0x10000000000) // Terabyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "TB";
							 | 
						|||
| 
								 | 
							
								            readable = i >> 30;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else if (i >= 0x40000000) // Gigabyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "GB";
							 | 
						|||
| 
								 | 
							
								            readable = i >> 20;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else if (i >= 0x100000) // Megabyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "MB";
							 | 
						|||
| 
								 | 
							
								            readable = i >> 10;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else if (i >= 0x400) // Kilobyte
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            suffix = "KB";
							 | 
						|||
| 
								 | 
							
								            readable = i;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return i.ToString(sign + "0 B"); // Byte
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        readable /= 1024;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return sign + readable.ToString("0.### ") + suffix;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |