public bool CreateUpload(string destination, byte[] data, FileCompressionMode compress, FileType type) { Close(); _fileHash = Utils.Adler32(0, data, (ulong)data.Length); _filename = destination; _fileSize = (ulong)data.Length; _compressedSize = _fileSize; _compress = compress; _type = type; _closed = false; if (Compress == FileCompressionMode.WHOLE) { MemoryStream ms = new MemoryStream(); BinaryWriter gzipWriter = new BinaryWriter(ms); //write DEFLATE header gzipWriter.Write((byte)0x78); gzipWriter.Write((byte)0x9C); using (DeflateStream compressStream = new DeflateStream(ms, CompressionMode.Compress, true)) compressStream.Write(data, 0, (int)_fileSize); _compressedSize = (ulong)ms.Length; _data = ms.ToArray(); } else { _data = new byte[_fileSize]; Buffer.BlockCopy(data, 0, _data, 0, (int)_fileSize); } return(true); }
/// <summary> /// Default constructor /// </summary> /// <param name="settings">The settings when serializing the data</param> /// <param name="compressionMode">The compression mode for files and the block</param> public UbiArtIPKArchiveConfigViewModel(UbiArtSettings settings, FileCompressionMode compressionMode) { CompressionMode = compressionMode; Settings = settings; CompressedExtensions = ".dtape.ckd," + ".fx.fxb," + ".m3d.ckd," + ".png.ckd," + ".tga.ckd"; }
private void QueueFileUpload(PatchAsset asset, FileCompressionMode compress) { var info = new FileUploadInfo() { Asset = asset, Compress = compress }; lock (_uploadQueue) _uploadQueue.Enqueue(info); }
private void QueueFileUpload(PatchFile asset, FileCompressionMode compress) { var info = new FileUploadInfo() { File = asset, Compress = compress, LocalFile = Path.Combine(Program.Config.PatcherFilesPath, asset.Name) }; lock (_uploadQueue) _uploadQueue.Enqueue(info); }
private void QueueFileUpload(FileType type, string destination, byte[] data, FileCompressionMode compress) { var info = new FileUploadInfo() { Destination = destination, Data = data, FileType = type, Compress = compress }; lock (_uploadQueue) _uploadQueue.Enqueue(info); }
/// <summary> /// Creates file that is being uploaded to client from harddrive /// </summary> /// <param name="filename"></param> /// <param name="destination"></param> /// <param name="compress"></param> /// <param name="type"></param> /// <returns></returns> public bool CreateUpload(string filename, string destination, FileCompressionMode compress, FileType type, uint hash = 0) { Close(); _closed = false; _file = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); if (hash == 0) { _fileHash = Utils.Adler32(_file, _file.Length); } else { _fileHash = hash; } _filename = destination; _fileSize = (ulong)_file.Length; _destination = destination; _compressedSize = _fileSize; _compress = compress; _type = type; if (Compress == FileCompressionMode.WHOLE) { _compressedTempFileName = Path.Combine(Program.Config.TempFilesPath, "tempu_" + DateTime.Now.ToFileTimeUtc().ToString() + ".part"); if (File.Exists(_compressedTempFileName)) { File.Delete(_compressedTempFileName); } _compressedTempFile = new FileStream(_compressedTempFileName, FileMode.Create, FileAccess.ReadWrite); BinaryWriter gzipWriter = new BinaryWriter(_compressedTempFile); //write DEFLATE header gzipWriter.Write((byte)0x78); gzipWriter.Write((byte)0x9C); using (DeflateStream compressStream = new DeflateStream(_compressedTempFile, CompressionMode.Compress, true)) _file.CopyTo(compressStream); // gzipWriter.Write(_fileHash); //write adler32 gzipWriter.Flush(); _compressedSize = (ulong)_compressedTempFile.Length; _file.Close(); _file = _compressedTempFile; } return(true); }
public FileStructure(string _filename, byte[] data) { Version = 0; Flags = 0; CompressionMode = FileCompressionMode.Uncompressed; ModificationTime = 0; ModificationDate = 0; CRC32 = (int)Cryptography.Crc32Algorithm.Compute(data); CompressedSize = -1; UncompressedSize = -1; FilenameLength = (short)_filename.Length; //TODO: Calculate this value, make sure alignment to 0x1000 ExtraLength = 0; Filename = _filename; Extra = new FileStructureExtraData(_filename, data); }
public FileStructure(Stream stream, CustomBinaryReader reader) { if ((stream.Position - 4) % 0x1000 != 0) { throw new Exception("File Data Section Alignment Error (Pre Read)"); } Version = reader.ReadInt16(); Flags = reader.ReadInt16(); CompressionMode = (FileCompressionMode)reader.ReadInt16(); ModificationTime = reader.ReadUInt16(); ModificationDate = reader.ReadUInt16(); CRC32 = reader.ReadInt32(); CompressedSize = reader.ReadInt32(); UncompressedSize = reader.ReadInt32(); FilenameLength = reader.ReadInt16(); ExtraLength = reader.ReadInt16(); Filename = reader.ReadString(FilenameLength); Extra = new FileStructureExtraData(stream, reader, ExtraLength); }