在C#中复制特定文件(.docx,.pdf,.pptx等)表单文件夹

时间:2014-02-10 08:55:33

标签: c#

我正在尝试将文件(.docx,.pdf,.pptx等)从源文件夹(在服务器上)复制到目标文件夹(在客户端上)。 用户可以选择他想要下载的文件列表中的哪一个。他选择文件然后将其下载(将其复制到他的计算机)到目标路径 dstnLocation= @"C:\Fldr\Docs;

我的代码:

string sourceLocation = textBox2.Text;
string dstnLocation = @"C:\Fldr\Docs";
System.IO.FileInfo file = new System.IO.FileInfo(dstnLocation);
file.Directory.Create();

System.IO.File.Copy(sourceLocation, dstnLocation,true);
MessageBox.Show("Download Complete");

问题是它创建了一个文件作为“Docs”(其中一个必须使用open with打开文件),如果我没有错,那么因为目的地路径。有人可以告诉我我做错了什么。 通过数据库检索源路径!

3 个答案:

答案 0 :(得分:2)

你需要连接,否则你的目的地位置就是文件夹而不是文件路径目的地

这样做

 var destFile = string.Format(@"{0}\{1}", dstnLocation, Path.GetFileName(sourceLocation));

然后复制

所以代码变成

string sourceLocation = textBox2.Text;
string dstnLocation = string.Format(@"C:\Fldr\Docs\{0}", Path.GetFileName(sourceLocation);
if (! System.IO.Directory.Exists(dstnLocation))
{
      System.IO.Directory.CreateDirectory(dstnLocation);
}

System.IO.File.Copy(sourceLocation, dstnLocation,true);
MessageBox.Show("Download Complete");

答案 1 :(得分:0)

您正在错误地创建文件名:

string dstnLocation = @"C:\Fldr\Docs";
System.IO.FileInfo file = new System.IO.FileInfo(dstnLocation);

这会创建一个名为"C:\Fldr\Docs"的文件,例如,如果我没有记错的话,您想要的是"C:\Fldr\Docs\myfilename.docx"吗?

请改为尝试:

var filename = Path.GetFileName(sourceLocation);
string dstnLocation = Path.Combine(@"C:\Fldr\Docs", filename);

答案 2 :(得分:0)

这里的问题是目的地需要一个“输出”文件名。

这个问题在于这行代码

System.IO.File.Copy(sourceLocation, dstnLocation,true);

dstnLocation需要与输出文件名连接,例如:

System.IO.File.Copy(sourceLocation, Path.Combine(dstnLocation,"Database.dbs"),true);