/// <summary> /// Adds a file to the archive. /// </summary> /// <param name="file">The file to add.</param> /// <param name="compressionType">Compression method to use for storing the file.</param> public void Add(string file, ResourceCompressionType compressionType, string path = "") { var resFile = new ResourceFile(); resFile.Pack(file, compressionType, path); Add(resFile); }
public void Pack(string file, ResourceCompressionType cmpType, string path = "") { if (path == string.Empty) { path = file; } using (var fileStream = new FileStream(file, FileMode.Open)) using (var fileReader = new BinaryReader(fileStream)) { if (fileStream.Length > int.MaxValue) { throw new NotSupportedException("File is too big to fit inside of RF archive."); } filepath = path; data = fileReader.ReadBytes((int)fileStream.Length); fileReader.Close(); fileStream.Close(); compressionType = cmpType; switch (compressionType) { case ResourceCompressionType.Store: // data is already in original format. break; case ResourceCompressionType.Fast: //Console.WriteLine("[RF] Compressing {0}...", filepath); data = RF.RfCompression.CompressHuffman(data); break; case ResourceCompressionType.Best: //Console.WriteLine("[RF] Compressing {0}...", filepath); data = RF.RfCompression.CompressZlib(data); break; default: throw new InvalidDataException("Unsupported compression type"); } compressedSize = (uint)data.Length; timestamp = File.GetLastWriteTime(file); } }
public void Pack(string file, bool compress = false, string path = "") { ResourceCompressionType cmpType = (compress ? ResourceCompressionType.Best : ResourceCompressionType.Store); Pack(file, cmpType, path); }