Some useful code that you need from time to time
Now available as a nuget package:
dotnet add package ByteUnit --version 1.0.2
- Calculate the length directly into the unit prefix which is appropriate:
var value = ByteUnit.FindUnit(1024);
// value.Length = Your new length
// value.Type = Your new unit prefix.- Calculate e.g. 1024 KB to MB
var value = ByteUnit.From(new ByteUnit(1024.0, Unit.KB), Unit.MB);
// or alternative
var value = ByteUnit.From(ByteUnit.FromKB(1024), Unit.MB);- Compare two
ByteUnits
var fileSize = ByteUnit.FromFileInfo(new System.IO.FileInfo("PATH"));
if (fileSize < ByteUnit.FromMB(10))
{
// e.g. only download this file if it's less than 10MB big.
}- Easy conversation
var value = ByteUnit.Parse("999.5 MB/s");
var gb = value.To(Unit.GB);- Parse from string
var value = ByteUnit.Parse("100 MB");
// var value = ByteUnit.Parse("999.5 MB/s");
// you can also use TryParse ByteUnit overrides the default ToString()-Method, so you can use it to format your values in strings. There is also an overload for "bytes per seconds", this will add /s to end of the formatted string!
Useful for associate a file extension with your program (with icon)
// Add
FileAssociation.SetFileAssociation("_NAME_", "_EXTENSION_", "_PATH_TO_ICO", "_PATH_TO_EXE");
// Delete
FileAssociation.DeleteFileAssociation("_NAME_", "_EXTENSION_");// Create a zip archive
await ZipHelper.CreateZipFileFromDirectoryAsync(@"F:\Data", @"C:\Users\test\Desktop\test.zip");
// Extract a zip archive
await ZipHelper.ExtractZipFileAsync(@"C:\Users\test\Desktop\test.zip", @"F:\Data");- You can also pass a
byte[]toExtractZipFileAsync(...)! - All methods are available synchronously (e.g.
ExtractZipFiles(...)) and asynchronously (usingasyncandawait)! - If you are not using .NET Core there is no
System.IO.Path.GetRelativeMethod. But you can use this port instead!
// Create hash from file
string hash = await Hash.CreateHashFromFileAsync(@"F:\Data\test.iso");