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");
您必须将文件名附加到目录路径。这样做:
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));