You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
|
|
namespace TestDecompressor
|
|
{
|
|
|
|
|
|
public class Program
|
|
{
|
|
static string directoryPath = @"c:\temp";
|
|
public static void Main()
|
|
{
|
|
|
|
DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);
|
|
Compress(directorySelected);
|
|
|
|
foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.chunk"))
|
|
{
|
|
Decompress(fileToDecompress);
|
|
}
|
|
Console.ReadKey();
|
|
}
|
|
|
|
public static void Compress(DirectoryInfo directorySelected)
|
|
{
|
|
|
|
foreach (FileInfo file in directorySelected.GetFiles("*.xml"))
|
|
using (FileStream originalFileStream = file.OpenRead())
|
|
{
|
|
if ((File.GetAttributes(file.FullName) & FileAttributes.Hidden)
|
|
!= FileAttributes.Hidden & file.Extension != ".cmp")
|
|
{
|
|
using (FileStream compressedFileStream = File.Create(file.FullName + ".cmp"))
|
|
{
|
|
using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionMode.Compress))
|
|
{
|
|
originalFileStream.CopyTo(compressionStream);
|
|
}
|
|
}
|
|
|
|
FileInfo info = new FileInfo(directoryPath + "\\" + file.Name + ".cmp");
|
|
Console.WriteLine("Compressed {0} from {1} to {2} bytes.", file.Name, file.Length, info.Length);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Decompress(FileInfo fileToDecompress)
|
|
{
|
|
using (FileStream originalFileStream = fileToDecompress.OpenRead())
|
|
{
|
|
string currentFileName = fileToDecompress.FullName;
|
|
string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
|
|
|
|
using (FileStream decompressedFileStream = File.Create(newFileName))
|
|
{
|
|
using (DeflateStream decompressionStream = new DeflateStream(originalFileStream, CompressionMode.Decompress))
|
|
{
|
|
decompressionStream.CopyTo(decompressedFileStream);
|
|
Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|