Click here to Skip to main content
Click here to Skip to main content

Quick and dirty directory copy

By , 17 Jan 2006
 

Introduction

I saw a program to speed up the file copying process but I wanted to add some features to it, like, skip overwriting existing files, or no copying of existing files. Also, I wanted to control and monitor the copy process by a better method.

Background

I think you have to know how to manage a thread, and must be familiar with memory buffers. That's all :)

File.Read(bytesArray,Offset ,bufferSize);

Using the code

This code abstractly copies files from one path to another path, by read portions (equal to the buffer size) then writing it on the destination file, then looping the same for all files on the source directory. It displays progress information for a file, for the current directory, and for the entire copy process.

public string File_Copy(string strSource, 
          string strDestination,FileMode mode, 
          int bufferSize,int Action)
{
    byte[] Readbytes;
    Readbytes = new byte[bufferSize];
    ///1 read file Binary 
    ///
    FileStream Sfs = File.OpenRead(strSource);
    Dfs = File.Open(strDestination,mode);
    FileInfo Sinfo = new FileInfo(Sfs.Name);
    FileInfo Dinfo=new FileInfo(Dfs.Name);
    //
    //Set Progress File Name On Form1
    Form1.progCurrentFile.Text = strSource;
    while (Sfs.Length - Sfs.Position>=bufferSize)
    {
        //Read Buffer
        Sfs.Read(Readbytes,0,bufferSize);
        //Write Buffer
        Dfs.Write(Readbytes,0,bufferSize);
        UpdatePersentageOfFile(Sfs.Position,Sfs.Length);

        ///try to change Buffer Size at Copping file 
        ///
        bufferSize = Settings.bufferSize;
        Readbytes = null;
        Readbytes = new  byte[Settings.bufferSize];
        //end try 
        System.Windows.Forms.Application.DoEvents();

        // Write the Reminder to buffer If any
        if (Sfs.Position < Sfs.Length)
        {
            Sfs.Read(Readbytes,0, 
              int.Parse(Sfs.Length.ToString()) - 
              int.Parse(Sfs.Position.ToString()));
            Dfs.Write(Readbytes,0, 
              int.Parse(Sfs.Length.ToString()) - 
              int.Parse(Sfs.Position.ToString()));
            UpdatePersentageOfFile(Sfs.Position,Sfs.Position);
            TotalCopiedSize+=Sfs.Length;
            //Check for program Changes
            //FW
            //Do Events 
            System.Windows.Forms.Application.DoEvents();
        }
    }
    //end write 
}

Points of Interest

Current features:

  1. Copy files/directories from source directory to distention directory.
  2. Control memory buffer to speed up the copy process.
  3. Scan source directory to see all the files and directories inside, and get abstract info about the source directory.
  4. Pause / resume / cancel the copy process.
  5. Progress bars for a file, directory, and the copy process.
  6. In case of a damaged file found, it doesn't skip the copy process as Windows does. But it tells the user about it and the user can choose from one of the following options: write whatever can be written from the source file to the destination file /skip this file /skip all damaged files /write whatever can be written for all damaged files found.

Using the executable

  1. Copy
    • Click on the Source button to select the source directory.
    • Click on the Destination button to select where you want to copy it to.

    Now you can click Copy to start copying files. You may click on Progress to see how fast the files are copied and the actual percentage of completion. You may change the buffer size to speed up / slow down the copy process. You can also pause /resume /cancel the copy process at any time.

  2. Get information of a directory

    You can use this application to get information about a particular directory, like, how many files are inside a directory, the names of files, size information, etc.

    • Select a source directory.
    • Click on the Info button.
    • You may also select the Info tab to see an information display about the source directory.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Tareq_Gamal
Egypt Egypt
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Questionwhat about 2010 and c# 4memberTareq_Gamal11 Oct '10 - 21:40 
SuggestionRe: what about 2010 and c# 4memberNhilesh B10 Oct '11 - 2:21 
GeneralRe: what about 2010 and c# 4membertareqGamal19 Nov '11 - 10:08 
GeneralPreserving the file attributesmember248912828 Apr '08 - 19:49 
GeneralRe: Preserving the file attributesmemberTareq_Gamal5 May '08 - 23:26 
GeneralThere has many bugsmember057_100118 Jul '07 - 0:39 
AnswerRe: There has many bugsmembertareqGamal24 Jan '08 - 2:31 
Generalcopy to 0memberDavidDou8 Feb '07 - 6:13 
GeneralRe: copy to 0membertareqGamal9 Mar '07 - 10:10 
GeneralI Love itmemberENG-HAMAD8 Nov '06 - 4:38 
hi:
my name is hamad and im studying ENG ELECTRONIC TECHNOLOGY,
Im interst to develope your software more and more because my case study for this year about transfer managment data, so it will be kind from you if u add me on msn ma3lomat@hotmail.com
with my best regards
hamad
AnswerRe: I Love it [modified]memberTareq_Gamal8 Nov '06 - 9:51 
GeneralVS2005membertareqGamal1 Feb '06 - 0:58 
GeneralRe: VS2005 [modified]memberTareq_Gamal13 Feb '06 - 7:20 
GeneralDoes not work!!memberAndrew Y23 Jan '06 - 17:40 
GeneralRe: Does not work!!memberTareq_Gamal23 Jan '06 - 23:31 
QuestionQ: DLL dependencies?memberBilou_Gateux22 Jan '06 - 22:41 
AnswerRe: Q: DLL dependencies?memberTareq_Gamal22 Jan '06 - 23:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130516.1 | Last Updated 17 Jan 2006
Article Copyright 2006 by Tareq_Gamal
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid