Esempio n. 1
0
        internal static Darc InsertFiles(Darc orig, string folderName)
        {
            string[] fileNames = new string[orig.Entries.Length];
            for (int i = 0; i < fileNames.Length; i++)
            {
                fileNames[i] = orig.FileNameTable[i].FileName;
            }

            string[] files = Directory.GetFiles(folderName, "*", SearchOption.AllDirectories);
            foreach (string file in files)
            {
                FileInfo fi       = new FileInfo(file);
                string   fileName = fi.Name;

                // Get Index of file
                int index = Array.IndexOf(fileNames, fileName);
                if (orig.Entries[index].IsFolder)
                {
                    throw new Exception(file + " is not a valid file to reinsert!");
                }

                Darc.InsertFile(ref orig, index, file);
            }
            // Fix Data layout
            Array.Resize(ref orig.Data, orig.Data.Length % 4 == 0
                                                                                         ? orig.Data.Length
                                                                                         : orig.Data.Length + 4 - orig.Data.Length % 4);
            orig.Header.FileSize = (uint)(orig.Data.Length + orig.Header.FileDataOffset);
            return(orig);
        }
Esempio n. 2
0
 internal static bool InsertFile(ref Darc orig, int index, string path)
 {
     try
     {
         return(Darc.InsertFile(ref orig, index, File.ReadAllBytes(path)));
     }
     catch (Exception)
     {
         return(false);
     }
 }