使用File.Move时,无法创建文件

时间:2014-03-06 15:16:38

标签: c#

我试图将文件从我的Resx移到我的电脑上,但我一直有问题。

所以我在参考资料中导入名为“bad”的文件夹,然后使用File.Move方法将文件夹“bad”移动到我的PC中。 但该程序不断崩溃,因为它说:Cannot create a file when its already exists.

这里是我使用的代码:

//txtpath is the root folder. I let the user choose the root folder and save it in txtpath.text

private void btnbadname_Click(object sender, EventArgs e)
{
        string source = "Resources\bad";
        string destination = txtpath.Text + @"\RADS\projects\lol_air_client\releases\0.0.1.74\deploy\assets\locale\App";

        File.Move(source, destination);

        MessageBox.Show("脏话ID已开启, 教程请点击下面的链接");
}

4 个答案:

答案 0 :(得分:1)

您正在使用File.Move移动目录,为什么不使用Directory.Move

MSDN documentation只会将文件从源位置移动到目的地,而Directory.Move会移动目录本身。

如果我误解了你,你想要移动一个文件;

您可以在使用之前检查文件是否存在:

if(File.Exists(fileName))
    File.Delete(fileName);

修改 如果要遍历目录并确保在移动文件之前该文件不存在,可以使用以下内容:

//Set the location of your directories                
string sourceDirectory = @"";
string destDirectory = @"";

//Check if the directory exists, and if not create it
if (!Directory.Exists(destDirectory))
    Directory.CreateDirectory(destDirectory);

DirectoryInfo sourceDirInfo = new DirectoryInfo(sourceDirectory);
//Iterate through directory and check the existance of each file
foreach (FileInfo sourceFileInfo in sourceDirInfo.GetFiles())
{
    string fileName = sourceFileInfo.Name;
    string destFile = Path.Combine(destDirectory, fileName);
    if (File.Exists(destFile))
        File.Delete(destFile);

    //Finally move the file    
    File.Move(sourceFileInfo.FullName, destFile);
}

答案 1 :(得分:1)

目标目录不能存在。在您的代码中,如果目录不存在,则创建目录,然后尝试移动目录,Move方法将为您创建目录。如果目录已存在,则需要删除它或移动它。

请参阅: Cannot create a file when that file already exists when using Directory.Move

答案 2 :(得分:0)

目的地也应该具有文件名

string destination = txtpath.Text + @"\RADS\projects\lol_air_client\releases\0.0.1.74\deploy\assets\locale\App\yourfilename.ext";

答案 3 :(得分:0)

使用MoveTo时,请提供发送文件的完整路径,包括文件名,例如pic123.jpg。如果您使用DirectoryInfo获取文件数组并想要移动它们中的任何一个,请将文件的Name属性附加到发送文件的目录路径中。 imgFile.MoveTo(“ C:\ myPictures \ ArchiveFolder \ pic123.jpg”)