Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
                }
        }
Esempio n. 3
0
        public void Pack(string file, bool compress = false, string path = "")
        {
            ResourceCompressionType cmpType = (compress ? ResourceCompressionType.Best : ResourceCompressionType.Store);

            Pack(file, cmpType, path);
        }