Esempio n. 1
0
        public void AllwaysAsk(bool fastMove)
        {
            //Copy the current file.
            if (File.Exists(CurrentFile.DestinyPath))
            {
                if (FileCollisionAction == CancelCollision)
                {
                    return;
                }

                FileCollisionAction = FileExist(this, CurrentFile);

                FileCollisionAction.Invoke(fastMove);
            }
            else
            {
                CurrentFile.CopyState            = CopyState.Processing;
                DiscoverdList.SizeOfFilesToCopy -= CurrentFile.Size;

                if (fastMove)
                {
                    Alphaleonis.Win32.Filesystem.File.Move(CurrentFile.FullName, CurrentFile.DestinyPath);
                }
                else
                {
                    FileCopier.CopyFile(CurrentFile);
                }

                AffterFileCopyAction.Invoke(CurrentFile);
            }
        }
Esempio n. 2
0
        protected CopyRoutineResult CopyRoutine(FilesList files, bool fastMove)
        {
            //System.IO.DirectoryInfo sysDirInfo = null;
            //FileAttributes sysAtt;
            //Alphaleonis.Win32.Filesystem.DirectoryInfo di = null;
            //FileAttributes att;

            for (; DiscoverdList.Index < DiscoverdList.Count; DiscoverdList.Index++)
            {
                try
                {
                    if (State == CopyHandleState.Canceled)
                    {
                        return(CopyRoutineResult.Canceled);
                    }

                    //Get the file to copy.
                    if (DiscoverdList.Count == 0 || DiscoverdList.Index >= DiscoverdList.Count)
                    {
                        return(CopyRoutineResult.Error);
                    }
                    CurrentFile           = DiscoverdList.Files[DiscoverdList.Index];
                    CurrentFile.CopyState = CopyState.Processing;

                    //Create the Directories.

                    try
                    {
                        //di = new Alphaleonis.Win32.Filesystem.DirectoryInfo(Alphaleonis.Win32.Filesystem.Path.GetDirectoryName(CurrentFile.FullName));
                        //att = di.Attributes;
                        LongPath.Directory.CreateDirectoriesInPath(CurrentFile.DestinyDirectoryPath);
                        //di=new Alphaleonis.Win32.Filesystem.DirectoryInfo(CurrentFile.DestinyDirectoryPath);
                        //di.Attributes = att;
                    }
                    catch (Exception)
                    {
                    }
                    finally
                    {
                        //This is a copy actions wich deals with file collisions.
                        FileCollisionAction.Invoke(fastMove);

                        //If the File was Processed succefully=============================
                        //Set the currentFile copy state as Copied.
                        CurrentFile.CopyState = affeterOperationState;

                        //Status.
                        CopiedsFiles++;
                    }
                }
                catch (Exception ex)
                {
                    opt = ErrorsCheck(ex);

                    if (opt == AffterErrorAction.Cancel)
                    {
                        return(CopyRoutineResult.Canceled);
                    }
                    else if (opt == AffterErrorAction.Try)
                    {
                        //Try to process the same file
                        DiscoverdList.Index--;
                        FileCopier.TotalBytesTransferred -= FileCopier.FileBytesTransferred;
                        FileCopier.FileBytesTransferred   = 0;
                    }
                    else if (!(ex is ThreadAbortException))
                    {
                        CurrentFile.CopyState = CopyState.Error;
                    }
                }
            }

            return(CopyRoutineResult.Ok);
        }