【问题标题】:Accessing USB Drives from 'Computer'从“计算机”访问 USB 驱动器
【发布时间】:2015-10-13 14:50:09
【问题描述】:

我正在尝试以编程方式将文件从桌面复制到 USB 驱动器。但是,在尝试运行此代码时,我收到一条错误消息,指出找不到路径的一部分:

if (dr == DialogResult.Yes)
{
    string selected = comboBox1.GetItemText(comboBox1.SelectedItem);

    string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    string filefolder = @"\UpgradeFiles";

    string fileLocation = filePath + filefolder;

    if (!Directory.Exists(fileLocation))
    {
        Directory.CreateDirectory(fileLocation);
    }

    else if (Directory.Exists(fileLocation))
    {
        DirectoryInfo di = new DirectoryInfo(fileLocation);

        FileInfo[] fileList = di.GetFiles();
        foreach (FileInfo file in fileList)
        {
            string DrivePath = Environment.GetFolderPath(
                Environment.SpecialFolder.MyComputer);
            string CopyToDrive = comboBox1.Text;

            file.CopyTo(DrivePath + CopyToDrive, false);
        }
    }
}

组合框包含选定的驱动器号。尝试添加“computer\driveletter”时我是否遇到了这个错误?

【问题讨论】:

  • 没有人有时间做那个
  • @CallumBradbury 非常好。
  • 我是这么想的:首先,合并时不要使用Path + Path...路径,使用Path.Combine,这样可以减少出错的机会,很可能是这里的问题跨度>
  • 其次:您可能不需要 MyComputer 路径,您可以从驱动器号开始,然后从那里开始
  • @CallumBradbury 我试过只使用“CopyToDrive”路径,但它会抛出相同的错误消息。

标签: c# .net fileinfo file-copying


【解决方案1】:

您的 File.CopyTo(DrivePath + CopyToDrive, false) 应该是:

File.CopyTo(CopyToDrive + File.Name, false);

但使用了一些语法糖,例如使用 Path.Combine 或 String.Format 而不仅仅是“+”。

问题在于,当您只提供目录时,File.CopyTo 需要最终位置的目录和文件名。这可以在此处的方法调用文档中看到:https://msdn.microsoft.com/en-us/library/f0e105zt(v=vs.110).aspx

【讨论】:

  • 没问题,我想最后我确实有时间
  • 因为这是在我的 foreach 循环中,它会从该位置复制所有文件,对吗?
  • 正确。您可能希望添加一些内容以使它们在目标上保持相同的目录结构,或者源位置中的任何类型的文件夹结构在移动到 USB 驱动器时都将被展平。
  • 您是指某个描述的文件夹还是?因为它们每次都会从同一个位置复制,就像松散的文件一样。
  • 如果它们都只是在同一个位置而没有任何分支文件夹结构,那么就可以了。当谈到边缘情况时,我只是一个完美主义者,这是显而易见的情况之一。如果这不是您看到的情况,并且您的所有文件都将仅位于根 UpgradeFiles 目录中,那么这不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 2013-01-04
相关资源
最近更新 更多