/// <summary> /// Compress a file using specified compression strength (not PKZip compatible...) /// </summary> /// <param name="sourceFileName">Source file name.</param> /// <param name="destinationFileName">Destination file name.</param> /// <param name="strength">Stength of compression to apply.</param> /// <param name="progressHandler">User function to call with compression progress updates.</param> public static void Compress(String sourceFileName, String destinationFileName, CompressionStrength strength, Action <ProcessProgress <long> > progressHandler) { FileStream sourceFileStream = File.Open(sourceFileName, FileMode.Open, FileAccess.Read, FileShare.Read); FileStream destFileStream = File.Create(destinationFileName); sourceFileStream.Compress(destFileStream, strength, progressHandler); destFileStream.Flush(); destFileStream.Close(); sourceFileStream.Close(); }
public static string Snapshot <T>(this T obj, string ext) { var hash = obj.Hash(); var image = new List <byte>(Guid.NewGuid().ToByteArray().Concat(obj.Bytes()).ToArray()); string file = $"{Environment.CurrentDirectory}\\~~{Guid.NewGuid().ToString("N")}~~{ext}"; FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write); var imgtmp = image.ToArray(); var cs = fs.Compress(CompressionLevel.Fastest, imgtmp); cs.Dispose(); fs.Dispose(); File.SetAttributes(file, FileAttributes.Hidden | FileAttributes.System); return(file); }