2 回答
TA贡献1779条经验 获得超6个赞
File.Move需要目标文件,而不仅仅是目标文件夹。您需要决定如何命名目标文件夹中移动的文件。它可以是与源文件相同的名称,也可以是您选择的其他名称。如果您想保留旧名称,Path.GetFilename 可能会有所帮助。
另请注意,EnumerateFiles比 GetFiles 更好,因为它允许您启动移动操作,而无需先加载内存中的所有文件名。
try
{
string dest = @"C:\Users\Billeh\Desktop\Test";
foreach (var file in Directory.EnumerateFiles(@"C:\Users\Billeh\Desktop\")
{
string destFile = Path.Combine(dest, Path.GetFileName(file))
if(!File.Exists(destFile))
File.Move(file, destFile);
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
还要考虑 File.Move 不能覆盖目标文件夹中的现有文件。如果文件存在,则会引发 IOException。所以,如果你想覆盖你需要删除目标文件之前,但无论如何,你需要添加一个检查File.Exists
TA贡献1820条经验 获得超10个赞
您可以使用Directory.Move(string, string)
方法,而不是逐个文件移动文件。
句法
Directory.Move(sourceDirPath, DestinationDirPath)
- 2 回答
- 0 关注
- 290 浏览
添加回答
举报