【问题标题】:File.Copy error - C# - IOException The filename, directory name, or volume labelFile.Copy 错误 - C# - IOException 文件名、目录名或卷标
【发布时间】:2017-01-08 10:00:25
【问题描述】:

尝试将目录中的所有文件/目录复制到我创建的新位置。 用户在组合框中选择要使用的“备份驱动器”,然后当他们单击备份桌面按钮时,它只会在该驱动器上创建一个备份目录并将所有文件复制到该目录中。

在驱动器上适当地创建了备份目录 - 但它遇到的第一个文件会引发错误。

private void backupDesktopButton_Click(object sender, EventArgs e)
{
     //set the destionationLocation to the selectedDrive
     string selectedDrive = backupDriveCombo.SelectedItem.ToString();
     string destinationLocation = selectedDrive+"Backups-" + DateTime.Now.Month.ToString()+"-"+DateTime.Now.Year.ToString()+"\\Desktop\\";
     if (!Directory.Exists(destinationLocation))
     {
         Directory.CreateDirectory(destinationLocation);
     }

     string desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

     string[] fileList = Directory.GetFiles(desktopFolder);
     foreach (string file in fileList)
     {
         //move the file
         File.Copy(file, destinationLocation);
     }
}

我得到错误:

IOException 未处理。

文件名、目录名或卷标语法不正确。

在“自动”窗口 (VS2010) 中,我看到位置设置正确:

destinationLocation = 适当的目录 (C:\Backups-8-2016\Desktop\)

file = 相应的第一个文件 (C:\Users\myusername\Desktop\myshortcut.url)

我错过了什么?我有权复制/粘贴/创建内容并创建存储它的目录 - 只是移动文件时出现问题。

【问题讨论】:

    标签: c#


    【解决方案1】:

    来自文档https://msdn.microsoft.com/en-us/library/c6cfw35a(v=vs.110).aspx

    第二个参数: 目标文件的名称。这不能是目录或现有文件。

    您需要将文件名连接到文件夹。

    【讨论】:

    • 我对此表示赞同——因为它阐明了问题所在的“原因”。
    【解决方案2】:

    试试这样的

    string[] fileList = Directory.GetFiles(desktopFolder);
    foreach (string file in fileList)
    {
        string targetFile = Path.Combine(destinationLocation, Path.GetFileName(file));
        if (File.Exists(targetFile)) File.Delete(targetFile);
        File.Copy(file, targetFile);
    }
    

    【讨论】:

    • 这很好用。结合其他答案(我赞成,因为它澄清了问题)我现在知道我做错了什么。
    • 只需阅读Path.Combine 功能,您就会明白为什么您遇到以前的问题,很高兴我可以快速为您解决这个问题 干杯..!
    猜你喜欢
    • 1970-01-01
    • 2019-09-30
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多