private ArchiveResult Archive(string scanDirectory, string target) { try { string tempFile = Path.GetTempFileName(); try { Lzma.Compress(scanDirectory, tempFile); File.Copy(tempFile, target); } finally { if (File.Exists(tempFile)) { File.Delete(tempFile); } } return(new ArchiveResult { Success = true }); } catch (Exception e) { return(new ArchiveResult { Success = false, Exception = e }); } }
public void Test_Lzma() { using (MemoryStream stream1 = new MemoryStream()) using (FileStream stream2 = new FileStream("temp.lzma", FileMode.Create)) //using (MemoryStream stream2 = new MemoryStream()) using (MemoryStream stream3 = new MemoryStream()) { for (int i = 0; i < 4; i++) { byte[] buffer = new byte[1024 * 1024]; _random.NextBytes(buffer); stream1.Write(buffer, 0, buffer.Length); } Stopwatch sw = new Stopwatch(); sw.Start(); stream1.Seek(0, SeekOrigin.Begin); Lzma.Compress(new WrapperStream(stream1, true), new WrapperStream(stream2, true), _bufferManager); stream2.Seek(0, SeekOrigin.Begin); Lzma.Decompress(new WrapperStream(stream2, true), new WrapperStream(stream3, true), _bufferManager); sw.Stop(); Debug.WriteLine(string.Format("Lzma: {0}", sw.Elapsed.ToString())); stream1.Seek(0, SeekOrigin.Begin); stream3.Seek(0, SeekOrigin.Begin); Assert.AreEqual(stream1.Length, stream3.Length); for (; ;) { byte[] buffer1 = new byte[1024 * 32]; int buffer1Length; byte[] buffer2 = new byte[1024 * 32]; int buffer2Length; if ((buffer1Length = stream1.Read(buffer1, 0, buffer1.Length)) <= 0) { break; } if ((buffer2Length = stream3.Read(buffer2, 0, buffer2.Length)) <= 0) { break; } Assert.IsTrue(CollectionUtilities.Equals(buffer1, 0, buffer2, 0, buffer1Length)); } } }
private void LZMAToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult warning = MessageBox.Show( "After the SC file has been compressed, the tool will clear all previous data to prevent reading errors.\nContinue?", "Beware!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); if (warning == DialogResult.Yes) { using (SaveFileDialog dlg = new SaveFileDialog()) { dlg.Filter = "Supercell Graphics (SC) | *.sc"; dlg.FileName = GetFileName(_scFile.GetInfoFileName()); dlg.OverwritePrompt = false; dlg.CreatePrompt = false; if (dlg.ShowDialog() == DialogResult.OK) { Lzma.Compress(_scFile.GetInfoFileName(), dlg.FileName); dlg.Title = "Please enter texture file location"; dlg.Filter = "Supercell Texture (SC) | *_tex.sc"; dlg.FileName = GetFileName(_scFile.GetTextureFileName()); if (dlg.ShowDialog() == DialogResult.OK) { Lzma.Compress(_scFile.GetTextureFileName(), dlg.FileName); } } } saveToolStripMenuItem.Visible = false; reloadToolStripMenuItem.Visible = false; exportAllShapeToolStripMenuItem.Visible = false; exportAllChunkToolStripMenuItem.Visible = false; exportAllAnimationToolStripMenuItem.Visible = false; compressionToolStripMenuItem.Visible = false; addTextureToolStripMenuItem.Visible = false; treeView1.Nodes.Clear(); pictureBox1.Image = null; label1.Text = null; _scFile = null; } }