System.IO.File.Copy抛出IOException异常
我试图复制一些文件:System.IO.File.Copy抛出IOException异常
private void DoCopy() {
string[] files = Directory.GetFiles(Application.StartupPath + "\\App_Data", "*.*", SearchOption.AllDirectories);
string sFtpToReadFileFrom = "ftp://<user>:<pass>@mysite.tk/updates/App_Data/";
string sPathToWriteFileTo = Application.StartupPath + "\\App_Data";
WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("user", "pass");
foreach (string s in files)
{
string fileName = Path.GetFileName(s);
string destFile = Path.Combine(sPathToWriteFileTo, fileName);
byte[] fileData = webClient.DownloadData(sFtpToReadFileFrom + fileName); //shows correct bytes
File.Copy(s, destFile, true);
}
}
确切的错误是:该进程无法访问文件“C:\ AppLauncher \ AppLauncher \ BIN \调试\ App_Data \ firstFile',因为它正在被另一个进程使用。
我跟着“MSDN如何”在这里:http://msdn.microsoft.com/en-us/library/cc148994.aspx
如有任何直接的红旗,请不要让我知道。
这就是我看待它:
您希望从FTP服务器上下载文件,并将其写入到本地磁盘。 你正在做的是将源目录中的文件作为目标,这根本不起作用。如果文件已经存在,那么他们可以在那里获取文件名。 (因此除外)
这里是你必须做的
连接到FTP,那里获取文件(其字节),然后在磁盘上创建文件。
private void DoCopy() {
//string[] files = Directory.GetFiles(Application.StartupPath + "\\App_Data", "*.*", SearchOption.AllDirectories);
//Acquire filenames from FTP-Server instead of local disk!
string sFtpToReadFileFrom = "ftp://<user>:<pass>@mysite.tk/updates/App_Data/";
string sPathToWriteFileTo = Application.StartupPath + "\\App_Data";
WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("user", "pass");
foreach (string s in files)
{
string fileName = Path.GetFileName(s); //create file names based on FTP-server
string destFile = Path.Combine(sPathToWriteFileTo, fileName);
byte[] fileData = webClient.DownloadData(sFtpToReadFileFrom + fileName); //shows correct bytes
//File.Copy(s, destFile, true); Rather use File.WriteAllBytes
File.WriteAllBytes(destFile, fileData);
}
}
用于File.WriteAllBytes
一个例子见here。
从FTP文件名的获取不是那么简单,虽然。 FtpWebRequest
-class支持你。
谢谢。我需要更新文件,它们都是相同的名称,但文件大小不同(已更新)。 – avidprogrammer 2013-04-20 05:38:20
我刚下载它,它显示正确的字节,它为什么不复制? :( – avidprogrammer 2013-04-20 05:39:25
你不能用'File.Copy'来更新它们,当目标存在时它会抛出一个System.IOException,或者在使用'File.Copy'之前删除文件或者我提供的方法。 – 2013-04-20 05:45:43
第一个文件应该是什么? – 2013-04-20 05:21:36
当我点击属性时,它只是说文件 – avidprogrammer 2013-04-20 05:24:14
我很难理解你的代码...请解释你正在尝试做什么。 – 2013-04-20 05:25:16