1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System;
- using System.IO;
- using System.Text;
- using static DiskAccessLibrary.Mod.Consts;
- namespace DiskAccessLibrary
- {
- public abstract partial class DiskImage
- {
- public static string GetDiskImageInfo(string path)
- {
- if (path == null) throw new ArgumentNullException(nameof(path));
- var info = new StringBuilder();
- if (false == File.Exists(path))
- {
- info.AppendLine("** File not found **");
- }
- else
- {
- var extension = System.IO.Path.GetExtension(path).ToLower();
- switch (extension)
- {
- default:
- info.AppendLine($"No info for extension {extension}");
- break;
- case ".img":
- var rawLength = new FileInfo(path).Length;
- info.AppendLine("Raw Disk Image");
- info.AppendLine($"Size: {rawLength / MegaByte:N0} MB");
- break;
- case ".bdd":
- info.AppendLine("Block Differencing Disk Image");
- var bdd = new BddInfo(path, false);
- if (null == bdd.BasedImagePath)
- {
- info.AppendLine("** No Base Image Mode **");
- }
- else
- {
- if (false == File.Exists(bdd.BasedImagePath))
- {
- info.AppendLine("** Based image file not found **");
- info.AppendLine($"Based on: {bdd.BasedImagePath}");
- break;
- }
- var baseLength = new FileInfo(bdd.BasedImagePath).Length;
- info.AppendLine($"Based on: {bdd.BasedImagePath}");
- info.AppendLine($"Based Size: {baseLength / MegaByte:N0} MB");
- if (baseLength != bdd.Length)
- {
- info.AppendLine("** Fully Size not match to base **");
- break;
- }
- }
- info.AppendLine($"Block Size: {bdd.BlockSize / KiloByte:N0} KB");
- info.AppendLine($"Block Count: {bdd.NumberOfBlocks:N0}");
- info.AppendLine($"Fully Size: {bdd.Length / MegaByte:N0} MB");
- break;
- }
- }
- return info.ToString();
- }
- }
- }
|