private void Merge(MovingInfo source, MovingInfo destination) { if (source != null && destination != null) { Merge(source.MovedFiles, destination.MovedFiles); Merge(source.WaitingFiles, destination.WaitingFiles); Merge(source.ExceptionFiles, destination.ExceptionFiles); RemoveDublicate(source.MovedFiles, source.WaitingFiles, source.ExceptionFiles); } }
public MovingThreadInfo(uint timeOut, uint dueTime, uint period, List <MovingQueueItem> movingQueue) { TimeOut = timeOut; DueTime = dueTime; Period = period; MovingQueue = movingQueue; Start = null; End = null; LastMovingInfo = false; movingInfo = new MovingInfo(); }
public MovingInfo MoveFiles(string sourcePath, string destinationPath, IEnumerable <string> searchPatterns = null) { MovingInfo result = new MovingInfo(); if (!string.IsNullOrWhiteSpace(sourcePath) && !string.IsNullOrWhiteSpace(destinationPath)) { string inPath = ValidatePath(sourcePath); string outPath = ValidatePath(destinationPath); if (PrepareDirectory(inPath) && PrepareDirectory(outPath)) { string[] fileNames = GetFileNames(inPath, searchPatterns); foreach (string fileName in fileNames) { try { if (!System.IO.Directory.Exists(outPath)) { System.IO.Directory.CreateDirectory(outPath); //************************************ Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] Create directory " + outPath, DateTime.Now); Console.WriteLine("-------------------------------------------------------------------------"); //************************************ } System.IO.File.Move(inPath + fileName, outPath + fileName); result.MovedFiles.Add(new FileOperationInfo(FileOperation.Move, fileName, DateTimeOffset.Now)); //************************************ Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] Moved file " + fileName, DateTime.Now); Console.WriteLine("-------------------------------------------------------------------------"); //************************************ } catch (Exception e) { FileOperationInfo operationInfo = new FileOperationInfo(FileOperation.Move, fileName, DateTimeOffset.Now, e); if (e is IOException && e.HResult == -2147024864) // Файл захвачен другим процессом { result.WaitingFiles.Add(operationInfo); ; // TODO Write Exception to LOG } else { result.ExceptionFiles.Add(operationInfo); ; // TODO Write Exception to LOG } //************************************ DateTime now = DateTime.Now; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] File Name: " + fileName, now); Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] Exception Type: " + e.GetType().FullName, now); Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] HResult:" + e.HResult, now); Console.WriteLine("[{0:yyyy'.'MM'.'dd HH':'mm':'ss fffffff}] Message: " + e.Message, now); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("-------------------------------------------------------------------------"); //************************************ } } } } return(result); }