-2

ローカル ディスクからフラッシュへのコピーに問題があります。コードは以前は機能していましたが、別の foreach ループを作成し、新しいオブジェクトを作成する必要が生じた後、File.Copy 機能が機能しなくなりました。値ファイル | System.IO.File には次のような値があります。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

ほとんどの場合、新しいファイルを作成した後、s を閉じていませんFileStreamFileStreamを使用して新しく作成されたファイルの を閉じるか、ブロックmyFile.Close();内に新しいファイルを作成します。using (var myFile = File.Create(myPath))

于 2013-01-21T09:21:54.507 に答える