private void btnStart_Click(object sender, EventArgs e) { if (txtSourceFile.Text.Trim().Length == 0 || txtDestFile.Text.Trim().Length == 0) { MessageBox.Show("Не указаны рабочие файлы"); return; } if (thCopyFile != null) { return; } thCopyFile = new Thread(ThCopyRoutine); thCopyFile.IsBackground = true; ParamCopyFile = new CopyParam(); ParamCopyFile.srcFileName = txtSourceFile.Text.Trim(); ParamCopyFile.destFileName = txtDestFile.Text.Trim(); ParamCopyFile.frm = this; pbFileCopy.Value = 0; pbFileCopy.Minimum = 0; pbFileCopy.Maximum = 1000; pbFileCopy.Step = 100; thCopyFile.Start(ParamCopyFile); }
public void CopyHandler() { const string CURRENT_ROOT = "TestCopyFolder"; const string CURRENT_ROOT_PATH = ROOT_TEST_PATH + "\\" + CURRENT_ROOT; const string TEST_FOLDER_SRC_NAME = "FolderSrc"; const string TEST_FOLDER_SRC_PATH = CURRENT_ROOT_PATH + "\\" + TEST_FOLDER_SRC_NAME; const string TEST_FOLDER_DST_NAME = "FolderDst"; const string TEST_FOLDER_DST_PATH = CURRENT_ROOT_PATH + "\\" + TEST_FOLDER_DST_NAME; const string TEST_FILE_TXT_NAME = "TestFile.txt"; const string TEST_SRC_FILE_TXT_PATH = TEST_FOLDER_SRC_PATH + "\\" + TEST_FILE_TXT_NAME; const string TEST_DST_FILE_TXT_PATH = TEST_FOLDER_DST_PATH + "\\" + TEST_FILE_TXT_NAME; Directory.CreateDirectory(TEST_FOLDER_SRC_PATH); Directory.CreateDirectory(TEST_FOLDER_DST_PATH); FileIO.WriteData(TEST_SRC_FILE_TXT_PATH, "0"); FileIO.WriteData(TEST_DST_FILE_TXT_PATH, "1"); var targetToCopy = new BaseActionTarget { IsFile = true, Name = TEST_FILE_TXT_NAME }; var param = new CopyParam { SourceDirectory = $"/{CURRENT_ROOT}/{TEST_FOLDER_SRC_NAME}", DestinationDirectory = $"/{CURRENT_ROOT}/{TEST_FOLDER_DST_NAME}", Targets = new List <BaseActionTarget> { targetToCopy }, Overwrite = true }; var result = new CopyHandler(CreateHostingEnv()).Run(param) as CopyResult; PrintErrors(result.Errors); string value = FileIO.ReadToEnd(TEST_DST_FILE_TXT_PATH); Assert.Equal("0", value); Assert.True(File.Exists(TEST_SRC_FILE_TXT_PATH)); Assert.True(result.Errors.Count == 0); }
void ThCopyRoutine(object arg) { CopyParam par = arg as CopyParam; FileStream src = new FileStream(par.srcFileName, FileMode.Open, FileAccess.Read); FileStream dst = new FileStream(par.destFileName, FileMode.OpenOrCreate, FileAccess.Write); // временный буффер для чтения-записи byte[] buf = new byte[ReadSize]; // Получение длины файла FileInfo fi = new FileInfo(par.srcFileName); long FileSize = fi.Length; long ReadAll = 0; while (!par.IsStop) { int readBytes = src.Read(buf, 0, ReadSize); dst.Write(buf, 0, readBytes); // общее число прочтенных байтов ReadAll += readBytes; // 0...1000 ==> 0.0 ... 100.0 int ReadProcent = (int)((double)ReadAll / FileSize * 100.0 * 10 + 0.5); //par.frm.pbFileCopy.Value = ReadProcent; par.frm.pbFileCopy.Invoke(new Action <int>( (x) => { par.frm.pbFileCopy.Value = x; //par.frm.pbFileCopy.Invalidate(); par.frm.pbFileCopy.Update(); }), ReadProcent); //if (readBytes < ReadSize) { if (ReadAll == FileSize) { par.IsStop = true; //break; } par.evnPause.WaitOne(); } }
static void Main(string[] args) { Console.WriteLine("Generating format..."); #region Params var p_copy = new CopyParam { CurrentFolderPath = "/", SourceDirectory = "/", DestinationDirectory = "/", Overwrite = false, Targets = new System.Collections.Generic.List <BaseActionTarget> { new BaseActionTarget { IsFile = true, Name = "sample.txt" } } }; var p_move = new MoveParam { CurrentFolderPath = "/", SourceDirectory = "/", DestinationDirectory = "/", Overwrite = false, Targets = new System.Collections.Generic.List <BaseActionTarget> { new BaseActionTarget { IsFile = true, Name = "sample.txt" } } }; var p_createFolder = new CreateFolderParam { CurrentFolderPath = "/", Name = "new folder name" }; var p_delete = new DeleteParam { CurrentFolderPath = "/", Targets = new System.Collections.Generic.List <string> { "itemNameToDelete" } }; var p_folderStruct = new FolderStructParam { CurrentFolderPath = "/", FileExtensions = new string[] { ".txt" } }; var p_rename = new RenameParam { CurrentFolderPath = "/", Targets = new System.Collections.Generic.List <RenameActionTarget> { new RenameActionTarget { IsFile = true, Name = "new name", OldName = "old name" } } }; #endregion #region Results var r_copy = new CopyResult { Errors = new System.Collections.Generic.List <string> { "Error message." } }; var r_move = new MoveResult { Errors = new System.Collections.Generic.List <string> { "Error message." } }; var r_createFolder = new CreateFolderResult { Errors = new System.Collections.Generic.List <string> { "Error message." } }; var r_delete = new DeleteResult { Affected = 0, Errors = new System.Collections.Generic.List <string> { "Error message." } }; var r_folderStruct = new FolderStructResult { Errors = new System.Collections.Generic.List <string> { "Error message." }, Files = new System.Collections.Generic.List <FileInfoProxy> { new FileInfoProxy { Name = "file.name", Properties = new System.Collections.Generic.Dictionary <string, string> { { "Property", "Value" } } } }, Folders = new System.Collections.Generic.List <FileInfoProxy> { new FileInfoProxy { Name = "folder name", Properties = new System.Collections.Generic.Dictionary <string, string> { { "Property", "Value" } } } } }; var r_rename = new RenameResult { Affected = 0, Errors = new System.Collections.Generic.List <string> { "Error message." }, RenamedObjects = new System.Collections.Generic.List <RenameActionTarget>() { new RenameActionTarget { IsFile = true, Name = "new name", OldName = "old name" } } }; #endregion SaveFormat("p_copy.json", p_copy); SaveFormat("p_move.json", p_move); SaveFormat("p_createFolder.json", p_createFolder); SaveFormat("p_delete.json", p_delete); SaveFormat("p_folderStruct.json", p_folderStruct); SaveFormat("p_rename.json", p_rename); SaveFormat("r_copy.json", r_copy); SaveFormat("r_move.json", r_move); SaveFormat("r_createFolder.json", r_createFolder); SaveFormat("r_delete.json", r_delete); SaveFormat("r_folderStruct.json", r_folderStruct); SaveFormat("r_rename.json", r_rename); }