106 lines
3.5 KiB
C#
106 lines
3.5 KiB
C#
using EIS.Framework.Service.GEM;
|
|
using JWH;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Linq;
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DDUtilityApp.TEST
|
|
{
|
|
|
|
public partial class FrmTest01 : Form
|
|
{
|
|
|
|
public string FileName { get; set; }
|
|
|
|
public FrmTest01()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.SetLayout();
|
|
this.SetEventHandler();
|
|
}
|
|
|
|
protected void SetLayout()
|
|
{
|
|
|
|
}
|
|
|
|
protected void SetEventHandler()
|
|
{
|
|
this.button1.Click += Button1_Click;
|
|
this.button2.Click += Button2_Click;
|
|
}
|
|
|
|
private void Button1_Click(object sender, EventArgs e)
|
|
{
|
|
OpenFileDialog dlg = new OpenFileDialog();
|
|
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
|
|
if (dlg.ShowDialog() != DialogResult.OK) return;
|
|
|
|
this.FileName = dlg.FileName;
|
|
}
|
|
|
|
private void Button2_Click(object sender, EventArgs e)
|
|
{
|
|
FileInfo file = new FileInfo(this.FileName);
|
|
Decompress(file);
|
|
}
|
|
|
|
private static string directoryPath = @".\temp";
|
|
|
|
public static void Compress(DirectoryInfo directorySelected)
|
|
{
|
|
foreach (FileInfo fileToCompress in directorySelected.GetFiles())
|
|
{
|
|
using (FileStream originalFileStream = fileToCompress.OpenRead())
|
|
{
|
|
if ((File.GetAttributes(fileToCompress.FullName) &
|
|
FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
|
|
{
|
|
using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".gz"))
|
|
{
|
|
using (GZipStream compressionStream = new GZipStream(compressedFileStream,
|
|
CompressionMode.Compress))
|
|
{
|
|
originalFileStream.CopyTo(compressionStream);
|
|
}
|
|
}
|
|
FileInfo info = new FileInfo(directoryPath + Path.DirectorySeparatorChar + fileToCompress.Name + ".gz");
|
|
Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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 (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
|
|
{
|
|
decompressionStream.CopyTo(decompressedFileStream);
|
|
Console.WriteLine($"Decompressed: {fileToDecompress.Name}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|