/// <summary> /// Move the specified file to target directroy /// </summary> /// <param name="sourceFile">Soruce file to move to target directroy</param> /// <param name="worker">BackgroundWorker for move</param> /// <param name="e">Provides data for the BackgroundWorker</param> /// <returns>True if files was moves sucessfull</returns> private bool MoveFile(FileInfo sourceFile, BackgroundWorker worker, DoWorkEventArgs e) { FileInfo TargetFile = new FileInfo(this._target + @"\" + sourceFile.Name); try { if (TargetFile.Exists) { HandleExistingFiles.CheckResult HandleFile = HandleExistingFiles.GetOverwriteByAction(sourceFile, TargetFile, Settings.Default.ExistingFile_DateFormat, (HandleExistingFiles.HowToHandleExistingItem)Settings.Default.ExistingFile_Handle, Settings.Default.ExistingFile_AddText, false, out _, this._mainForm); if (HandleFile.FormResult == DialogResult.Cancel) { e.Cancel = true; worker.CancelAsync(); return(false); } if (HandleFile.RememberAction) { Settings.Default.ExistingFile_AddText = HandleFile.AddText; Settings.Default.ExistingFile_Handle = (int)HandleFile.SelectedAction; Settings.Default.Save(); this.ExistingFileSettingsChanged?.Invoke(this, new EventArgs()); } //Handle overwrite state switch (HandleFile.OverwriteFile) { case HandleExistingFiles.ExistingFile.Exception: this.FileExceptions++; return(false); case HandleExistingFiles.ExistingFile.Overwrite: TargetFile.Delete(); break; case HandleExistingFiles.ExistingFile.Rename: //Nothing to do, rename done by "HandleExistingFiles" break; case HandleExistingFiles.ExistingFile.Skip: this.FileSkip++; return(false); } } // Move file System.IO.File.Move(sourceFile.FullName, TargetFile.FullName); this.FileMove++; return(true); } catch (Exception ex) { MessageBox.Show(this._mainForm, string.Format(Stringtable._0x0001m, new object[] { sourceFile.FullName, TargetFile.FullName, ex.Message }), Stringtable._0x0001c, MessageBoxButtons.OK, MessageBoxIcon.Error); this.FileExceptions++; return(false); } }
/// <summary> /// Copya file from target to source /// </summary> /// <param name="sourceFile">Source file to copy</param> /// <param name="targetDirectory">Target directroy for copy the files to</param> /// <param name="worker">BackgroundWorker for count</param> /// <param name="e">Provides data for the BackgroundWorker</param> /// <param name="exception">Exception of the process</param> /// <returns>Exception level of the copy process</returns> private TaskException.ExceptionLevel CopyFile(FileInfo sourceFile, DirectoryInfo targetDirectory, BackgroundWorker worker, DoWorkEventArgs e, out Exception exception) { this._progress.FileBytes.ActualValue = 0; this._progress.FileBytes.ElemenName = sourceFile.FullName; this._progress.FileBytes.MaxValue = sourceFile.Length; worker.ReportProgress((int)TaskControle.TaskStep.Copy_Busy, new ProgressState(this._progress)); FileInfo TargetFile = new FileInfo(targetDirectory.FullName + @"\" + sourceFile.Name); try { if (TargetFile.Exists) { HandleExistingFiles.CheckResult HandleFile = HandleExistingFiles.GetOverwriteByAction(sourceFile, TargetFile, Properties.Settings.Default.Copy_FileExisitngAddTextDateFormat, this._project.Settings.Common.ExisitingFiles.HandleExistingItem, this._project.Settings.Common.ExisitingFiles.AddTextToExistingFile, false, out exception, this._mainForm); if (HandleFile.FormResult == DialogResult.Cancel) { worker.ReportProgress((int)TaskControle.TaskStep.Cancel, new ProgressState(true)); e.Cancel = true; worker.CancelAsync(); return(TaskException.ExceptionLevel.NoException); } else if (HandleFile.RememberAction) { this._project.Settings.Common.ExisitingFiles.HandleExistingItem = HandleFile.SelectedAction; this._project.Settings.Common.ExisitingFiles.AddTextToExistingFile = HandleFile.AddText; } //Handle overwrite state switch (HandleFile.OverwriteFile) { case HandleExistingFiles.ExistingFile.Exception: worker.ReportProgress((int)TaskControle.TaskStep.Copy_Busy, new ProgressState(this._progress)); return(TaskException.ExceptionLevel.Medium); case HandleExistingFiles.ExistingFile.Overwrite: case HandleExistingFiles.ExistingFile.Rename: //Nothing speceial to do break; case HandleExistingFiles.ExistingFile.Skip: this._progress.TotalBytes.ActualValue += sourceFile.Length; this._progress.TotalFiles.ActualValue++; worker.ReportProgress((int)TaskControle.TaskStep.Copy_Busy, new ProgressState(this._progress)); return(TaskException.ExceptionLevel.NoException); } } if (!this.CopyFileBufferd(sourceFile, TargetFile, worker, e, out exception)) { return(this.GetFullDiscExceptionReturnCode(exception, TaskException.ExceptionLevel.Medium)); } else { this._progress.TotalFiles.ActualValue++; } //Report Progress worker.ReportProgress((int)TaskControle.TaskStep.Copy_Busy, new ProgressState(this._progress)); return(TaskException.ExceptionLevel.NoException); } catch (Exception ex) { exception = ex; TaskException.ExceptionLevel ReturnLevel = this.GetFullDiscExceptionReturnCode(exception, TaskException.ExceptionLevel.Medium); TaskException Exception = new TaskException { Description = Properties.Stringtable._0x000E, Exception = ex, Level = ReturnLevel, Source = sourceFile.FullName, Target = TargetFile.FullName }; this._progress.Exception = Exception; worker.ReportProgress((int)TaskControle.TaskStep.Exception, new ProgressState(this._progress, true)); return(ReturnLevel); } }