2013-01-21 200 views
-2

我有從本地磁盤複製到閃存的問題。之前的代碼工作,但在創建anoteher foreach循環後,我不得不創建新的對象,File.Copy功能不再工作。 在值文件| System.IO.File中有這樣的值:Error_Access_Denied | 5,Error_Invalid參數| 87,GetFileExInfoStandard | 0.File.Copy訪問被拒絕

編輯: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:\」。

+2

訪問被拒絕表示您沒有足夠的權限。無效的參數表示其中一個參數無效。只有你知道你傳遞了什麼參數。我們無法猜測。 –

+0

您是否有權在該位置嘗試複製該文件?我認爲這是問題。在資源管理器中打開該位置並嘗試創建文本文件。如果它不允許你,那麼你肯定沒有權利去那個地方。 –

+0

還檢查該位置是否有效。 –

回答

0

最有可能在創建新文件後,您不關閉FileStream。使用myFile.Close();關閉新創建文件的FileStream或在using (var myFile = File.Create(myPath))塊內創建新文件。

+0

您能提供整個代碼和確切的異常以及它發生的位置嗎? – daryal