-2

我在从本地磁盘复制到闪存时遇到问题。该代码之前有效,但在我创建了另一个 foreach 循环并且我必须创建新对象之后,File.Copy 功能不再有效。在价值文件 | System.IO.File 有类似的值: Error_Access_Denied | 5、Error_Invalid参数| 87、GetFileExInfoStandard | 0。

编辑:locationUSB 显示闪存上的文件路径。(locationUSB == "D:\something.hex") 和 x._location == "C:\something_1.hex" 。

foreach (object item in this.dataGridView2.Rows)
{
    versionOnDisk = this.VersionInt(x._version);
    versionOnFlash = this.VersionInt(((DataGridViewRow)item).Cells[2].Value.ToString());

    if (versionOnFlash > versionOnDisk)
        forbidCopying = true;
    else
        locationUSB = _logicalDrive + ((DataGridViewRow)item).Cells["Filename"].Value.ToString();  // <-- location value (because of the foreach)

    if (!forbidCopying)
        File.Copy(x._location, locationUSB, true);   // <--
    else if (AllowDelete.Checked)
        File.Delete(locationUSB);
}

编辑:如果我将位置更改为逻辑驱动器路径,其值为“D:\”,我会得到未处理的 DirectoryNotFoundException:找不到路径“D:\”的一部分。

4

1 回答 1

0

很可能在创建新文件之后,您没有关闭FileStreams. FileStream使用或者在块myFile.Close();内创建新文件关闭新创建文件的s。using (var myFile = File.Create(myPath))

于 2013-01-21T09:21:54.507 回答