private void OnCreated(object sender, FileSystemEventArgs e) { string path = e.FullPath; try { FileInfo fileInfo = new FileInfo(path); DateTime dateTime = fileInfo.LastWriteTime; string year = dateTime.ToString("yyyy"); string month = dateTime.ToString("MM"); string day = dateTime.ToString("dd"); byte[] key, iv; (key, iv) = Encryptor.CreateKeyAndIV(); string name = Path.GetFileNameWithoutExtension(path); string extension = Path.GetExtension(path); string fileName = Path.GetFileName(path); string gzPath = Path.Combine(targetDir, name + ".gz"); string newPath = Path.Combine(targetDir, name + extension); //encryting byte[] content = File.ReadAllBytes(path); content = Encryptor.Encrypt(content, key, iv); File.WriteAllBytes(path, content); //compressing and copying to targetDir Archive.Compress(path, gzPath); logger.Log($"File \"{name}\" is moved from \"{sourceDir}\" to \"{targetDir}\" successfully!"); File.Delete(path); //copying to additional archive char sep = Path.DirectorySeparatorChar; string archiveDir = Path.Combine(targetDir, $"archive{sep}year {year}{sep}month {month}{sep}day {day}"); string archiveName = name + '_' + dateTime.ToString("yyyy_MM_dd_HH_mm_ss") + ".gz"; string archivePath = Path.Combine(archiveDir, archiveName); Directory.CreateDirectory(archiveDir); File.Copy(gzPath, archivePath); //decompressing Archive.Decompress(gzPath, newPath); File.Delete(gzPath); //decrypting content = File.ReadAllBytes(newPath); string decrypted = Encryptor.Decrypt(content, key, iv); File.WriteAllText(newPath, decrypted); } catch { logger.Log("A problem occured..."); } }
private void OnCreated(object sender, FileSystemEventArgs e) { string path = e.FullPath; try { FileInfo fileInfo = new FileInfo(path); DateTime dt = fileInfo.LastWriteTime; byte[] key, iv; (key, iv) = Encryptor.CreateKeyAndIV(); byte[] contents = File.ReadAllBytes(path); contents = Encryptor.Encrypt(contents, key, iv); File.WriteAllBytes(path, contents); string name = Path.GetFileNameWithoutExtension(path); string ext = Path.GetExtension(path); string gzPath = Path.Combine(target, name + ".gz"); string newPath = Path.Combine(target, name + ext); if (needArchive) { Archive.Compress(path, gzPath); } if (needArchive) { Archive.Decompress(gzPath, newPath); } if (!needArchive) { File.Copy(path, newPath); } contents = File.ReadAllBytes(newPath); contents = Encryptor.Decrypt(contents, key, iv); File.WriteAllBytes(newPath, contents); File.Delete(path); if (needArchive) { File.Delete(gzPath); } string year = dt.ToString("yyyy"); string month = dt.ToString("MM"); string day = dt.ToString("dd"); string newArchiveDir = Path.Combine(target, $@"archive\{year}\{month}\{day}"); string newArchiveName = dt.ToString(@"yyyy_MM_dd_HH_mm_ss") + ext; string newArchivePath = Path.Combine(newArchiveDir, newArchiveName); Directory.CreateDirectory(newArchiveDir); File.Copy(newPath, newArchivePath); logger.Log($"File {path} moved successfully"); } catch { try { logger.Log($"Error moving {path} file"); } catch { } } }