简体   繁体   中英

Copy file to a different directory

I am working on a project where I want to copy some files in one directory to a second already existing directory.

I can't find a way to simply copy from one folder to another. I can find copy file to a new file, or directory to a new directory.

The way I have my program set up right now is I copy the file and leave it in same directory, then move that copy to the directory that I want.

Edit:

Thanks everyone. All of your answers worked. I realized what I did wrong, when i set the destination path I didn't add a filename. Everything works now, Thanks for the super speedy responses.

string fileToCopy = "c:\\myFolder\\myFile.txt";
string destinationDirectory = "c:\\myDestinationFolder\\";

File.Copy(fileToCopy, destinationDirectory + Path.GetFileName(fileToCopy));
File.Copy(@"someDirectory\someFile.txt", @"otherDirectory\someFile.txt");

工作正常。

MSDN File.Copy

var fileName = "sourceFile.txt";
var source = Path.Combine(Environment.CurrentDirectory, fileName);
var destination = Path.Combine(destinationFolder, fileName);

File.Copy(source, destination);

Maybe

File.Copy("c:\\myFolder\\myFile.txt", "c:\\NewFolder\\myFile.txt");

?

This worked for me:

    string picturesFile = @"D:\pictures";
    string destFile = @"C:\Temp\tempFolder\";

    string[] files = Directory.GetFiles(picturesFile);
    foreach (var item in files)
    {
       File.Copy(item, destFile + Path.GetFileName(item));
    }

I used this code and it work for me

//I declare first my variables
string sourcePath = @"Z:\SourceLocation";
string targetPath = @"Z:\TargetLocation";

string destFile = Path.Combine(targetPath, fileName);
string sourceFile = Path.Combine(sourcePath, fileName);

// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!Directory.Exists(targetPath))
{
    Directory.CreateDirectory(targetPath);
}

// To copy a file to another location and 
// overwrite the destination file if it already exists.
File.Copy(sourceFile, destFile, true);

If the destination directory doesn't exist, File.Copy will throw. This version solves that

public void Copy(
            string sourceFilePath,
            string destinationFilePath,
            string destinationFileName = null)
{
       if (string.IsNullOrWhiteSpace(sourceFilePath))
                throw new ArgumentException("sourceFilePath cannot be null or whitespace.", nameof(sourceFilePath));
       
       if (string.IsNullOrWhiteSpace(destinationFilePath))
                throw new ArgumentException("destinationFilePath cannot be null or whitespace.", nameof(destinationFilePath));
       
       var targetDirectoryInfo = new DirectoryInfo(destinationFilePath);

       //this creates all the sub directories too
       if (!targetDirectoryInfo.Exists)
           targetDirectoryInfo.Create();

       var fileName = string.IsNullOrWhiteSpace(destinationFileName)
           ? Path.GetFileName(sourceFilePath)
           : destinationFileName;

       File.Copy(sourceFilePath, Path.Combine(destinationFilePath, fileName));
}

Tested on .NET Core 2.1

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