C#.Net 中的文件复制

本文关键字:文件 复制 Net | 更新日期: 2023-09-27 18:33:41

>我正在尝试构建一个复印机,以便您使用openFileDialog选择一个文件,然后使用folderBrowserDialog选择要将其复制到的位置。

我遇到的问题是,当我使用File.Copy(copyFrom,copyTo)时,它给了我一个无法复制到目录的异常。

这周围有没有,还是我只是错过了一些愚蠢和菜鸟的东西。我尝试使用openFD来选择两个位置,并且刚刚尝试使用folderBD看看它是否有所作为。

我知道那里应该有 if 语句来捕获异常,但这是代码的粗略草案,可以正常工作 1st。

提前感谢您的帮助,并附上代码。

        // Declare for use in all methods
    public string copyFrom;
    public string copyTo;
    public string rootFolder = @"C:'Documents and Settings'cmolloy'My Documents";
    private void btnCopyFrom_Click(object sender, EventArgs e)
    {
        // uses a openFileDialog, openFD, to chose the file to copy
        copyFrom = "";
        openFD.InitialDirectory = rootFolder;
        openFD.FileName = "";
        openFD.ShowDialog();
        // sets copyFrom = to the file chosen from the openFD
        copyFrom = openFD.FileName;
        // shows it in a textbox
        txtCopyFrom.Text = copyFrom;
    }
    private void btnCopyTo_Click(object sender, EventArgs e)
    {
        //uses folderBrowserDialog, folderBD, to chose the folder to copy to
        copyTo = "";
        this.folderBD.RootFolder = System.Environment.SpecialFolder.MyDocuments;
        this.folderBD.ShowNewFolderButton = false;
        folderBD.ShowDialog();
        DialogResult result = this.folderBD.ShowDialog();
        // sets copyTo = to the folder chosen from folderBD
        copyTo = this.folderBD.SelectedPath;
        //shows it in a textbox.
        txtCopyTo.Text = copyTo;
    }
    private void btnCopy_Click(object sender, EventArgs e)
    {
        // copys file
        File.Copy(copyFrom, copyTo);
        MessageBox.Show("File Copied");

C#.Net 中的文件复制

您必须将文件名附加到目录路径。这样做:

string destinationPath = Path.Combine(copyTo, Path.GetFileName(copyFrom));
File.Copy(copyFrom, destinationPath);

(这样,您将所选文件复制到与原始文件同名的另一个目录,如果该目录中已经存在相同的文件,则会引发异常)

编辑
旁注:不要对源代码中的路径进行硬编码,请使用以下命令:

rootFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

获取当前用户的文档文件夹的路径。

这样做:

File.Copy(copyFrom, Path.Combine(copyTo, Path.GetFileName(copyFrom)));

File.Copy 需要知道所需新文件的完整路径,包括文件名。如果只想使用相同的文件名,则可以使用它将文件名附加到路径:

copyTo = Path.Combine(copyTo, Path.GetFileName(copyFrom));