forked from sin365/AxibugEmuOnline
175 lines
3.9 KiB
C#
175 lines
3.9 KiB
C#
using System.IO;
|
|
using System.Security.Cryptography;
|
|
|
|
namespace MyNes.Core
|
|
{
|
|
public class HelperTools
|
|
{
|
|
public static string GetFileSize(string FilePath)
|
|
{
|
|
if (File.Exists(Path.GetFullPath(FilePath)))
|
|
{
|
|
FileInfo fileInfo = new FileInfo(FilePath);
|
|
string text = " Byte";
|
|
double num = fileInfo.Length;
|
|
if (fileInfo.Length >= 1024)
|
|
{
|
|
num = (double)fileInfo.Length / 1024.0;
|
|
text = " KB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " MB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " GB";
|
|
}
|
|
return num.ToString("F2") + text;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public static string GetSize(long size)
|
|
{
|
|
string text = " Byte";
|
|
double num = size;
|
|
if (size >= 1024)
|
|
{
|
|
num = (double)size / 1024.0;
|
|
text = " KB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " MB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " GB";
|
|
}
|
|
if (num < 0.0)
|
|
{
|
|
return "???";
|
|
}
|
|
return num.ToString("F2") + text;
|
|
}
|
|
|
|
public static string GetSize(ulong size)
|
|
{
|
|
string text = " Byte";
|
|
double num = size;
|
|
if (size >= 1024)
|
|
{
|
|
num = (double)size / 1024.0;
|
|
text = " KB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " MB";
|
|
}
|
|
if (num >= 1024.0)
|
|
{
|
|
num /= 1024.0;
|
|
text = " GB";
|
|
}
|
|
if (num < 0.0)
|
|
{
|
|
return "???";
|
|
}
|
|
return num.ToString("F2") + text;
|
|
}
|
|
|
|
public static long GetSizeAsBytes(string FilePath)
|
|
{
|
|
if (File.Exists(FilePath))
|
|
{
|
|
return new FileInfo(FilePath).Length;
|
|
}
|
|
return 0L;
|
|
}
|
|
|
|
public static bool IsStringContainsNumbers(string text)
|
|
{
|
|
char[] array = text.ToCharArray();
|
|
foreach (char c in array)
|
|
{
|
|
int result = 0;
|
|
if (int.TryParse(c.ToString(), out result))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static string CalculateCRC(string filePath)
|
|
{
|
|
if (File.Exists(filePath))
|
|
{
|
|
Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
|
|
byte[] buffer = new byte[stream.Length];
|
|
stream.Read(buffer, 0, (int)stream.Length);
|
|
stream.Close();
|
|
string text = "";
|
|
byte[] array = new Crc32().ComputeHash(buffer);
|
|
foreach (byte b in array)
|
|
{
|
|
text += b.ToString("x2").ToLower();
|
|
}
|
|
return text;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public static string CalculateCRC(string filePath, int bytesToSkip)
|
|
{
|
|
if (File.Exists(filePath))
|
|
{
|
|
Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
|
|
stream.Read(new byte[bytesToSkip], 0, bytesToSkip);
|
|
byte[] buffer = new byte[stream.Length - bytesToSkip];
|
|
stream.Read(buffer, 0, (int)(stream.Length - bytesToSkip));
|
|
stream.Close();
|
|
string text = "";
|
|
byte[] array = new Crc32().ComputeHash(buffer);
|
|
foreach (byte b in array)
|
|
{
|
|
text += b.ToString("x2").ToLower();
|
|
}
|
|
return text;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public static string CalculateSHA1(string filePath)
|
|
{
|
|
if (File.Exists(filePath))
|
|
{
|
|
byte[] buffer = GetBuffer(filePath);
|
|
string text = "";
|
|
byte[] array = new SHA1Managed().ComputeHash(buffer);
|
|
foreach (byte b in array)
|
|
{
|
|
text += b.ToString("x2").ToLower();
|
|
}
|
|
return text;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public static byte[] GetBuffer(string filePath)
|
|
{
|
|
Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
|
|
byte[] array = new byte[stream.Length];
|
|
stream.Read(array, 0, (int)stream.Length);
|
|
stream.Close();
|
|
return array;
|
|
}
|
|
}
|
|
}
|