Ejemplo n.º 1
0
        public static ZtFile FromFile(string fileName)
        {
            var zt = new ZtFile
            {
                FileName = fileName
            };

            FileStream filestream = null;

            try
            {
                filestream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

                using (BinaryReader file = new BinaryReader(filestream))
                {
                    filestream = null;

                    zt.TargetName = Encoding.ASCII.GetString(file.ReadBytes(13)).TrimEnd('\0');

                    int count = file.ReadUInt16();

                    for (int i = 0; i < count; i++)
                    {
                        int    offset = file.ReadInt32();
                        byte   length = file.ReadByte();
                        byte[] bytes  = file.ReadBytes(length);

                        zt.Patches.Add(offset, bytes);
                    }

                    if (file.BaseStream.Position != file.BaseStream.Length)
                    {
                        byte[] commentBytes = file.ReadBytes((int)file.BaseStream.Length - (int)file.BaseStream.Position);

                        zt.Comment = Encoding.UTF8.GetString(commentBytes);
                    }

                    zt.Compact();
                }
            }
            finally
            {
                if (filestream != null)
                {
                    filestream.Dispose();
                }
            }

            return(zt);
        }
Ejemplo n.º 2
0
        public static ZtFile FromFile(string fileName)
        {
            var zt = new ZtFile();

            zt.FileName = fileName;

            FileStream filestream = null;

            try
            {
                filestream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

                using (BinaryReader file = new BinaryReader(filestream))
                {
                    filestream = null;

                    zt.TargetName = Encoding.ASCII.GetString(file.ReadBytes(13)).TrimEnd('\0');

                    int count = file.ReadUInt16();

                    for (int i = 0; i < count; i++)
                    {
                        int offset = file.ReadInt32();
                        byte length = file.ReadByte();
                        byte[] bytes = file.ReadBytes(length);

                        zt.patches.Add(offset, bytes);
                    }

                    if (file.BaseStream.Position != file.BaseStream.Length)
                    {
                        byte[] commentBytes = file.ReadBytes((int)file.BaseStream.Length - (int)file.BaseStream.Position);

                        zt.Comment = Encoding.UTF8.GetString(commentBytes);
                    }

                    zt.Compact();
                }
            }
            finally
            {
                if (filestream != null)
                {
                    filestream.Dispose();
                }
            }

            return zt;
        }