简体   繁体   中英

Unable to copy a file from one directory to application folder

I am writing ac# desktop app where I want users to select a file from open file dialog after which the program will copy the file to where the application is executing from: here is my code that is not working at the moment

var dlg = new Microsoft.Win32.OpenFileDialog { 
    Title           = "Select File", 
    DefaultExt      = ".json", 
    Filter          = "Json File (.json)|*.json", 
    CheckFileExists = true 
};

if (dlg.ShowDialog() == true)
{
    try
    {
        var currentDirectory = System.Windows.Forms.Application.ExecutablePath;
        var destFile = Path.Combine(currentDirectory + "/temp/", dlg.FileName);

        File.Copy(dlg.FileName, destFile, true);
    }
    catch (Exception ex)
    {
        MessageBox.Show(string.Format("An error occured: " + ex.Message));
    }
}

Now I am getting the error that

the file is being used by another program

. When I edit the code that is meant to initiate the copy by removing true:

File.Copy(dlg.FileName, destFile);

I get the error that the

file already exists

in the directory where it is being selected from.

It seems, that you have an incorrect path to write into.

 System.Windows.Forms.Application.ExecutablePath

returns exe file itself, not directory. Try

 var destFile = Path.Combine(
   Path.GetDirectoryName(Application.ExecutablePath), // Exe directory
  "temp",                                             // + Temp subdirectory
   Path.GetFileName(dlg.FileName));                   // dlg.FileName (without directory)

If you aren't sure that temp exists, you have to create it:

 Directory.CreateDirectory(Path.GetDirectoryName(destFile));

Use below Code for Copy file from one folder to another folder.

string[] filePaths = Directory.GetFiles("Your Path");
    foreach (var filename in filePaths)
    {
        string file = filename.ToString();

        //Do your job with "file"

        string str = "Your Destination"+file.ToString(),Replace("Your Path");
        if (!File.Exists(str))
        {
            File.Copy(file , str);
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM