private void CreateNewStorageList() { DirectoryInfo di = new DirectoryInfo(config.StorageFolder); if (di.Exists) { FileManipulator fm = new FileManipulator(); foreach (var f in di.GetFiles()) { try { // get header from file STORED_FILE_HEADER sfh = fm.GetHeaderFromFile(f.FullName); // fill StorageItem from header string originname = f.Name.Substring(0, f.Name.IndexOf(".part") - 5); // if string not found file name ignored StorageItem si = new StorageItem(sfh.FileName, originname, sfh.Description, sfh.OriginSize, (uint)sfh.ChunksQty, (uint)sfh.ChunkNum, sfh.MD5Chunk, sfh.MD5Origin); // add Storage item into List Vault.StorageList.Add(si); } catch (Exception e) { Logger.Log.Error("Error in StoredList creation process."); Logger.Log.Error(e.Message); //throw; } } // Serialize StorageList XmlSerializer formatter = new XmlSerializer(typeof(List <StorageItem>)); using (FileStream fs = new FileStream(config.StorageFolder + "List.xml", FileMode.OpenOrCreate)) { formatter.Serialize(fs, Vault.StorageList); } } else { di.Create(); // just create empty StoredFolder } }
public void GetHeader_TestMethod() { Helper h = new DataDepositer.Helper(); FileManipulator fm = new DataDepositer.FileManipulator(); // String filePathFull = "d:\\test\\datadepositor\\join\\test.txt"; String filePathFull = "d:\\test\\datadepositor\\testHeader.txt"; String MD5Origin = h.GetStringMD5("55555555555555555555555555555555"); String MD5Chunk = h.GetStringMD5("66666666666666666666666666666666"); STORED_FILE_HEADER sfh = new STORED_FILE_HEADER(); sfh.cb = (uint)Marshal.SizeOf(sfh); // size of struct sfh.ChunkNum = 3; sfh.ChunkSize = 0x1234; sfh.ChunksQty = 5; sfh.Description = @"Проверка описания на русском языке"; sfh.FileName = Path.GetFileName(filePathFull); sfh.MD5Chunk = MD5Chunk; sfh.MD5Origin = MD5Origin; sfh.OriginSize = 0x5432; FileInfo fi = new FileInfo(filePathFull); string v = filePathFull + ".hdr"; //string headerFile = File.Delete(v); // delete before copy fi.CopyTo(v); fm.AddHeaderToFile(sfh, v); STORED_FILE_HEADER newSfh = fm.GetHeaderFromFile(v); Console.WriteLine("{0}\n {1}\n{2}\n{3}\n{4}\n", newSfh.FileName, newSfh.Description, newSfh.MD5Origin, newSfh.MD5Chunk, newSfh.OriginSize); }