示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
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();
            }
        }
示例#4
0
        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);
        }