试试这个:
string[] SourceFilez = System.IO.Directory.GetFiles("path", "*.*", System.IO.SearchOption.AllDirectories);
string[] targetFilez = new string[SourceFilez.Length];
SourceFilez.CopyTo( targetFilez, 0 );
for(int i = 0; i < targetFilez.Length; ++i)
{
targetFilez[i] = targetFilez[i].Replace("oldfolder", "newfolder");
string strThisDirectory = System.IO.Path.GetDirectoryName(targetFilez[i]);
if (!System.IO.Directory.Exists(strThisDirectory))
{
System.IO.Directory.CreateDirectory(strThisDirectory);
}
System.IO.File.Copy(SourceFilez[i], targetFilez[i]);
}
您可能希望在try-catch-finally块中包含for循环内容。
要考虑空目录,您可能希望在没有file.copy的情况下重复相同的代码块,将SourceFilez替换为:
string[] SourceDirectories = System.IO.Directory.GetDirectories("path", "*.*", System.IO.SearchOption.AllDirectories);
如果您有IIS7并且用户没有必要的权限来写入目标文件夹,则需要使用身份模拟并将应用程序池切换为经典模式。
修改强>
或者你的意思是一种方法将web应用程序用户计算机上的文件夹中的所有文件一次上传到服务器?在这种情况下,您需要JQuery uploadify:
http://www.uploadify.com/