public void DeleteModuleGraphics(int orderPositionId) { var folderPath = new OrderImGraphicsFolderPathProvider(_positionImGraphicsFolderPathTemplate) .GetByValue(orderPositionId); DirectoryInfo directoryInfo = new DirectoryInfo(folderPath); if (directoryInfo.Exists) { FileInfo[] existsFiles = directoryInfo.GetFiles(); // Помечаем все файлы как удалённые. foreach (var fileInfo in existsFiles) { var existsFilePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName) .GetByValue(DateTime.Now); File.Move(fileInfo.FullName, existsFilePathToDelete); } } }
public void UpdateModuleGraphics(int orderPositionId, byte[] bytes, string fileName) { var updateDate = DateTime.Now; var folderPath = _orderImGraphicsFolderPathProvider.GetByValue(orderPositionId); DirectoryInfo directoryInfo = new DirectoryInfo(folderPath); if (directoryInfo.Exists) { FileInfo[] existsFiles = directoryInfo.GetFiles(); // Проверяем, есть ли в папке файлы с таким же названием var updateFileInfo = existsFiles.Where(f => f.Name == fileName).SingleOrDefault(); // Если файл с таким же названием не найден if (updateFileInfo == null) { // Помечаем все файлы как удалённые. foreach (var fileInfo in existsFiles) { var existsFilePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName) .GetByValue(DateTime.Now); File.Move(fileInfo.FullName, existsFilePathToDelete); } // Создаём новый файл CreateModuleGraphics(orderPositionId, bytes, fileName); } else { // Получаем временное название файла var tmpFilePath = folderPath + "\\~" + updateFileInfo.Name; File.WriteAllBytes(tmpFilePath, bytes); var tmpFileInfo = new FileInfo(tmpFilePath); if (FileComparer.FilesAreEqual_OneByte(updateFileInfo, tmpFileInfo)) { File.Delete(tmpFilePath); return; } var existsFilePathToDelete = new OrderImDeletedFileNameProvider(updateFileInfo.FullName) .GetByValue(updateDate); File.Move(updateFileInfo.FullName, existsFilePathToDelete); File.Move(tmpFilePath, updateFileInfo.FullName); // Помечаем все остальные файлы как удалённые. var filesToDelete = existsFiles.Where(f => f.Name != fileName); foreach (var fileInfo in filesToDelete) { var filePathToDelete = new OrderImDeletedFileNameProvider(fileInfo.FullName) .GetByValue(updateDate); File.Move(fileInfo.FullName, filePathToDelete); } } } else { CreateModuleGraphics(orderPositionId, bytes, fileName); } }