XzRwOps.cs 1.1 KB

123456789101112131415161718192021222324252627282930
  1. using XZ.NET;
  2. namespace WarcViewerBlazorWinForm.Backend.IO.Archiving
  3. {
  4. internal static class XzRwOps
  5. {
  6. public static Stream ReadXzStream(Stream inputStream) => new XZInputStream(inputStream);
  7. public static Stream WriteXzStream(Stream outputStream, int thread = 1, uint level = 9) => new XZOutputStream(outputStream, thread, level);
  8. public static Stream OpenReadXzFile(string filePath) => ReadXzStream(File.OpenRead(filePath));
  9. public static Stream OpenWriteXzFile(string filePath) => WriteXzStream(File.OpenWrite(filePath));
  10. public static byte[] ReadXzFile(string filePath)
  11. {
  12. using var fs = File.OpenRead(filePath);
  13. using var msDecompressed = new MemoryStream();
  14. using var xzR = ReadXzStream(fs);
  15. xzR.CopyTo(msDecompressed);
  16. return msDecompressed.ToArray();
  17. }
  18. public static void WriteXzFile(byte[] toCompressBytes, string filePath, uint level = 9)
  19. {
  20. var compressedBytes = XZOutputStream.Encode(toCompressBytes, level);
  21. File.WriteAllBytes(filePath, compressedBytes);
  22. }
  23. }
  24. }