mirror of
https://github.com/Stone-Red-Code/HyperbolicDownloader.git
synced 2026-09-04 09:06:10 +02:00
Improve code structure
- Add separate API project - Add notification system
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using System.IO.Compression;
|
||||
|
||||
namespace HyperbolicDownloaderApi.FileProcessing;
|
||||
|
||||
internal static class FileCompressor
|
||||
{
|
||||
public static void CompressFile(string inputFilePath, string compressedFilePath)
|
||||
{
|
||||
using FileStream originalFileStream = File.Open(inputFilePath, FileMode.Open);
|
||||
using FileStream compressedFileStream = File.Create(compressedFilePath);
|
||||
using GZipStream? compressor = new GZipStream(compressedFileStream, CompressionMode.Compress);
|
||||
originalFileStream.CopyTo(compressor);
|
||||
}
|
||||
|
||||
public static void DecompressFile(string compressedFilePath, string outputFilePath)
|
||||
{
|
||||
using FileStream compressedFileStream = File.Open(compressedFilePath, FileMode.Open);
|
||||
using FileStream outputFileStream = File.Create(outputFilePath);
|
||||
using GZipStream? decompressor = new GZipStream(compressedFileStream, CompressionMode.Decompress);
|
||||
decompressor.CopyTo(outputFileStream);
|
||||
}
|
||||
|
||||
public static IEnumerable<byte[]> ReadChunks(string path, int chunkSize)
|
||||
{
|
||||
byte[] buffer = new byte[chunkSize];
|
||||
using FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
using BufferedStream bs = new BufferedStream(fs);
|
||||
while (bs.Read(buffer, 0, chunkSize) != 0)
|
||||
{
|
||||
yield return buffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user