diff --git a/EgwCoreLib.Utils/FileHelpers.cs b/EgwCoreLib.Utils/FileHelpers.cs
new file mode 100644
index 0000000..cc94800
--- /dev/null
+++ b/EgwCoreLib.Utils/FileHelpers.cs
@@ -0,0 +1,50 @@
+namespace EgwCoreLib.Utils
+{
+ ///
+ /// Utility per gestione Files
+ ///
+ public class FileHelpers
+ {
+ #region Public Fields
+
+ public static readonly string[] SizeSuffixes = { "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
+
+ #endregion Public Fields
+
+ #region Public Methods
+
+ ///
+ /// Calcola dimensione file con corretta unità di misura secondo dimensione
+ ///
+ /// lunghezza file (in byte)
+ /// Num di cifre decimali richieste
+ ///
+ ///
+ public static string SizeSuffix(Int64 value, int decimalPlaces = 1)
+ {
+ if (decimalPlaces < 0) { throw new ArgumentOutOfRangeException("decimalPlaces"); }
+ if (value < 0) { return "-" + SizeSuffix(-value, decimalPlaces); }
+ if (value == 0) { return string.Format("{0:n" + decimalPlaces + "} bytes", 0); }
+
+ // mag is 0 for bytes, 1 for KB, 2, for MB, etc.
+ int mag = (int)Math.Log(value, 1024);
+
+ // 1L << (mag * 10) == 2 ^ (10 * mag) [i.e. the number of bytes in the unit
+ // corresponding to mag]
+ decimal adjustedSize = (decimal)value / (1L << (mag * 10));
+
+ // make adjustment when the value is large enough that it would round up to 1000 or more
+ if (Math.Round(adjustedSize, decimalPlaces) >= 1000)
+ {
+ mag += 1;
+ adjustedSize /= 1024;
+ }
+
+ return string.Format("{0:n" + decimalPlaces + "} {1}",
+ adjustedSize,
+ SizeSuffixes[mag]);
+ }
+
+ #endregion Public Methods
+ }
+}
\ No newline at end of file