// Methods
        /// <summary>
        /// Creates a new file integrity.
        /// </summary>
        /// <param name="path">The specified path.</param>
        public void Create(string path)
        {
            var header = new FileIntegrityHeader()
            {
                Tag     = FileIntegrity.FileTag,
                Version = FileIntegrity.FileVersion
            };

            Scan(Environment.CurrentDirectory);

            header.EntryCount = EntryCount;

            using (var writer = new BinaryWriter(File.Open(FileIntegrity.FileName, FileMode.Create, FileAccess.Write)))
            {
                writer.WriteStructure <FileIntegrityHeader>(header);

                foreach (var entry in Entries)
                {
                    writer.Write(entry.FileNameLen);
                    writer.Write(entry.FileName.ToCharArray(), 0, entry.FileNameLen);
                    writer.Write(entry.LastModifiedTime);
                    writer.Write(entry.Size);
                    writer.Write(entry.Checksum);
                }
            }
        }
        // Methods
        /// <summary>
        /// Creates a new file integrity.
        /// </summary>
        /// <param name="path">The specified path.</param>
        public void Create(string path)
        {
            var header = new FileIntegrityHeader()
            {
                Tag = FileIntegrity.FileTag,
                Version = FileIntegrity.FileVersion
            };

            Scan(Environment.CurrentDirectory);

            header.EntryCount = EntryCount;

            using (var writer = new BinaryWriter(File.Open(FileIntegrity.FileName, FileMode.Create, FileAccess.Write)))
            {
                writer.WriteStructure<FileIntegrityHeader>(header);

                foreach (var entry in Entries)
                {
                    writer.Write(entry.FileNameLen);
                    writer.Write(entry.FileName.ToCharArray(), 0, entry.FileNameLen);
                    writer.Write(entry.LastModifiedTime);
                    writer.Write(entry.Size);
                    writer.Write(entry.Checksum);
                }
            }
        }
        public void Read(string path)
        {
            if (!File.Exists(path))
            {
                System.Windows.Forms.MessageBox.Show("File not found - " + path, "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }

            var header = new FileIntegrityHeader();
            var list   = new List <FileIntegrityEntry>();

            using (var reader = new BinaryReader(File.Open(FileIntegrity.FileName, FileMode.Open, FileAccess.Read)))
            {
                header = reader.ReadStructure <FileIntegrityHeader>();

                for (int i = 0; i < header.EntryCount; i++)
                {
                    var entry = new FileIntegrityEntry();
                    entry.FileNameLen      = reader.ReadInt16();
                    entry.FileName         = new string(reader.ReadChars(entry.FileNameLen));
                    entry.LastModifiedTime = reader.ReadInt64();
                    entry.Size             = reader.ReadInt32();
                    entry.Checksum         = reader.ReadInt32();

                    list.Add(entry);
                }
            }

            Scan(Environment.CurrentDirectory);

            foreach (var entry in Entries)
            {
                if (list.Contains(entry, new FileIntegrityEntryComparer()))
                {
                    var lentry = list.Find(e => e.FileName == entry.FileName);
                    if (lentry.LastModifiedTime != entry.LastModifiedTime)
                    {
                        System.Windows.Forms.MessageBox.Show("File time missmatch - " + entry.FileName);
                    }
                    if (lentry.Size != entry.Size)
                    {
                        System.Windows.Forms.MessageBox.Show("File size missmatch - " + entry.FileName);
                    }
                    if (lentry.Checksum != entry.Checksum)
                    {
                        System.Windows.Forms.MessageBox.Show("File checksum missmatch - " + entry.FileName);
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("File not found - " + entry.FileName);
                }
            }
        }
        public void Read(string path)
        {
            if (!File.Exists(path))
            {
                System.Windows.Forms.MessageBox.Show("File not found - " + path, "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }

            var header = new FileIntegrityHeader();
            var list = new List<FileIntegrityEntry>();

            using (var reader = new BinaryReader(File.Open(FileIntegrity.FileName, FileMode.Open, FileAccess.Read)))
            {
                header = reader.ReadStructure<FileIntegrityHeader>();

                for (int i = 0; i < header.EntryCount; i++)
                {
                    var entry = new FileIntegrityEntry();
                    entry.FileNameLen = reader.ReadInt16();
                    entry.FileName = new string(reader.ReadChars(entry.FileNameLen));
                    entry.LastModifiedTime = reader.ReadInt64();
                    entry.Size = reader.ReadInt32();
                    entry.Checksum = reader.ReadInt32();

                    list.Add(entry);
                }
            }

            Scan(Environment.CurrentDirectory);

            foreach (var entry in Entries)
            {
                if (list.Contains(entry, new FileIntegrityEntryComparer()))
                {
                    var lentry = list.Find(e => e.FileName == entry.FileName);
                    if (lentry.LastModifiedTime != entry.LastModifiedTime)
                    {
                        System.Windows.Forms.MessageBox.Show("File time missmatch - " + entry.FileName);
                    }
                    if (lentry.Size != entry.Size)
                    {
                        System.Windows.Forms.MessageBox.Show("File size missmatch - " + entry.FileName);
                    }
                    if (lentry.Checksum != entry.Checksum)
                    {
                        System.Windows.Forms.MessageBox.Show("File checksum missmatch - " + entry.FileName);
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("File not found - " + entry.FileName);
                }
            }
        }