为什么File.Move没有按预期工作?

时间:2017-09-12 10:43:17

标签: c#

我正在尝试将所有文​​件从rootFolderPath移至destinationPath

try
{
    string rootFolderPath = @"D:\Log_siteq\";
    if (!Directory.Exists(Path.Combine(@"D:\Log_takaya\" + comboBox1.SelectedItem.ToString())))
    {
        System.IO.Directory.CreateDirectory(Path.Combine(@"D:\Log_takaya\" + comboBox1.SelectedItem.ToString()));
    }


    string destinationPath = Path.Combine(@"D:\Log_takaya\" + comboBox1.SelectedItem.ToString() );
    string fileTypes = @"*.*";
    string[] fileList = System.IO.Directory.GetFiles(rootFolderPath, fileTypes);
    foreach (string file in fileList)
    {
        string ext = Path.GetExtension(file);
        string destination = Path.Combine(destinationPath,file);                 
        File.Move( file,destination);
        MessageBox.Show(file);
        MessageBox.Show(destination);
    }
}
catch(Exception ex)
{
    MessageBox.Show(ex.ToString());
}

显然MessageBox.Show(file);向我展示了我的根文件夹路径(正常情况下),但MessageBox.Show(destination);向我展示了同样的事情。

是什么给出的?它只是将我的file从我的根文件夹移到同一个文件夹中。我没有得到什么东西?

1 个答案:

答案 0 :(得分:6)

您正在将destinationPathfile的完整文件路径组合:

string destination = Path.Combine(destinationPath, file);

只会用原始文件路径覆盖目标(因为“C:\ desitnation \ C:\ source \ filename.txt”不是有效路径)。

相反,您只需要这样的文件名:

string destination = Path.Combine(destinationPath, Path.GetFileName(file));