Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
        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);
        }