static void Main(string[] args) { Console.WriteLine("IMG file location: "); string fileLocation = Console.ReadLine(); if (File.Exists(@fileLocation)) { Console.WriteLine("Reading the IMG file!"); IMGArchive imgArchive = IMGFile.Open(@fileLocation, EIMGArchiveMode.Read); IMGArchiveEntry[] iMGArchiveEntries = imgArchive.Entries.OrderBy(x => x.Name).ToArray(); imgArchive.Dispose(); imgArchive.Entries = iMGArchiveEntries; for (int i = 0; i < imgArchive.Entries.Length; i++) { IMGArchiveEntry entry = imgArchive.Entries[i]; Console.WriteLine("Entry file " + i + " name is: " + entry.Name); } Console.WriteLine("Total entries is: " + imgArchive.Entries.Length); Console.ReadLine(); } else { Console.WriteLine("File doesn't exist"); Console.ReadLine(); } }
public void CommitToIMGFile() { InitArchives(); if (File.Exists("test3.img")) { File.Delete("test3.img"); } File.Copy("test1.img", "test3.img"); using (IMGArchive archive = IMGFile.Open("./test3.img", EIMGArchiveMode.Update)) { Assert.IsNotNull(archive); IMGArchiveEntry[] entries = archive.Entries; int entry_count = entries.Length; Assert.IsTrue(entry_count > 0); IMGArchiveEntry entry = entries[0]; string entry_name = entry.FullName; Console.WriteLine("Unpacking file \"" + entries[0].FullName + "\""); if (!(Directory.Exists("test"))) { Directory.CreateDirectory("test"); } long entry_size = 0; using (Stream entry_stream = entry.Open()) { Assert.IsNotNull(entry_stream); entry_size = entry_stream.Length; Assert.AreEqual(entry_size, (long)(entry.Length)); entry_stream.Seek(0L, SeekOrigin.End); for (int i = 0; i < 2048; i++) { entry_stream.WriteByte(0); } entry_size += 2048; } entries = archive.Entries; Assert.AreEqual(entry_count, entries.Length); entry = archive.GetEntry(entry_name); Assert.IsNotNull(entry); using (Stream entry_stream = entry.Open()) { Assert.AreEqual(entry_size, entry_stream.Length); Assert.AreEqual(entry_size, entry.Length); if (entry_size >= 2048) { entry_size -= 2048; entry_stream.SetLength(entry_size); } } } }