3

我已经从窗口应用程序的文件对话框中读取了一个 csv 文件。

不,我希望将特定文件复制到会产生问题的文件夹中。

代码如下

OpenFileDialog op1 = new OpenFileDialog();
op1.Multiselect = false;
op1.ShowDialog();
op1.Filter = "allfiles|*.csv";
txtSearchName.Text = op1.FileName;


File.Copy(op1.FileName, "C:\\Users\\skysoft\\Documents\visual studio 2010\\Projects\\MailSend\\MailSend\\CsvFile\\" + op1.FileName);

我做错了什么请帮忙。

4

3 回答 3

2

我建议始终在路径字符串之前使用 @ 符号以避免像您这样的问题:在“visual studio 2010”之前您需要多 1 个反斜杠。例如:

@"C:\Users\skysoft\Documents\visual studio 2010\Projects\MailSend\MailSend\CsvFile\"

另外,您正在提供方法

"C:\\Users\\skysoft\\Documents\visual studio 2010\\Projects\\MailSend\\MailSend\\CsvFile\\" + op1.FileName

这转化为

"C:\\Users\\skysoft\\Documents\visual studio 2010\\Projects\\MailSend\\MailSend\\CsvFile\\" + "c:\\...."

你应该Path.GetFileName(op1.FileName)按照keyboardP所说的或者op1.FileName.Substring(op1.LastIndexOf('\\'))

于 2013-07-03T08:27:52.503 回答
2

检查字符串,在visual studio之前缺少一个反斜杠\

File.Copy(op1.FileName, "C:\\Users\\skysoft\\Documents\visual studio 2010\\Projects\\MailSend\\MailSend\\CsvFile\\" + op1.FileName);
于 2013-07-03T08:25:05.033 回答
1

op1.FileName包含完整路径,而在将文件名附加到目标目录时只需要文件名。

using(OpenFileDialog op1 = new OpenFileDialog())
{
    op1.Multiselect = false;        
    op1.Filter = "allfiles|*.csv";
    op1.ShowDialog();
    txtSearchName.Text = op1.FileName;

    string dest = Path.Combine(@"C:\Users\skysoft\Documents\visual studio 2010\Projects\MailSend\MailSend\CsvFile\", Path.GetFileName(op1.FileName));
    File.Copy(op1.FileName, dest);
}
于 2013-07-03T08:37:03.923 回答