Exemplo n.º 1
0
        private static void SaveFile(BinaryReader binaryReader, string directory, string subDirectory, PakItem item)
        {
            var path = Path.Combine(directory, subDirectory, item.Path.Substring(1));
            var dir  = Path.GetDirectoryName(path);

            Directory.CreateDirectory(dir);

            using (var fs = File.Open(path, FileMode.Create))
            {
                var bytes = PakReader.ReadItem(binaryReader, item);
                fs.Write(bytes, 0, bytes.Length);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Fetches all items in the given pak.
        /// </summary>
        /// <param name="pakPath">File path to pak.</param>
        public void Fetch(string pakPath)
        {
            using (FileStream fs = File.Open(pakPath, FileMode.Open))
                using (BinaryReader binaryReader = new BinaryReader(fs))
                {
                    PakReader reader = new PakReader();
                    PakData   pak    = reader.Read(binaryReader);

                    foreach (PakItem item in pak.Items)
                    {
                        string ext = Path.GetExtension(item.Path);
                        if (Extensions == null || Extensions.Count == 0 ||
                            ext.Length > 0 && Extensions.Contains(ext.Substring(1).ToLowerInvariant()))
                        {
                            byte[] data = PakReader.ReadItem(binaryReader, item);
                            string s    = Encoding.UTF8.GetString(data);

                            OnItemFound?.Invoke(item.Path, s);
                        }
                    }
                }
        }