2011-03-09 83 views
-4

如何刪除ntfs驅動器上的文件?我試過deletefile並刪除,但都沒有工作。有什麼建議麼?使用c刪除ntfs中的文件

do { 
    char* nPtr = new char [lstrlen(data.cFileName) + 1]; 

    for(int i = 0; i < lstrlen(data.cFileName); i++) 
    nPtr[i] = char(data.cFileName[i]); 

    nPtr[lstrlen(data.cFileName)] = '\0'; 

    if(!strcmp(nPtr , fn)) 
    remove(nPtr); 

    cout << nPtr << endl; 
} 

感謝arefin

+2

什麼「不起作用」呢?你有錯誤嗎?你檢查了錯誤的含義嗎? – 2011-03-09 14:23:37

+1

你能告訴我們你試過的代碼嗎? – birryree 2011-03-09 14:23:50

+0

「我試過deletefile並刪除,但他們沒有工作。」 < - 怎麼這樣?正確的系統調用*是* [DeleteFile](http://msdn.microsoft.com/zh-cn/library/aa363915.aspx)。 – 2011-03-09 14:24:16

回答

8

DeleteFile()調用做的工作和你的情況下,它沒有工作。

DeleteFile()被約定爲刪除指定的文件,如果它可以被刪除。如果文件可以被刪除,那麼它會。如果該文件無法刪除,則不會。

如果DeleteFile()返回false,那麼文檔引用爲失敗,那麼文件沒有被刪除,這是有原因的。您可以撥打GetLastError()找出文件未被刪除的原因。

3

「沒有工作」,因爲錯誤的參數(指定路徑不正確)可能發生,或者因爲您沒有權限刪除文件或因爲該文件正在使用中。這些原因的解決方案不同。您可以通過檢查DeleteFile()是否返回false,然後調用GetLastError()函數來獲取錯誤代碼來檢查實際問題。 錯誤代碼:

2 - 找不到文件 3 - 未找到路徑 5 - 拒絕訪問 87 - 無效參數

+0

我在谷歌搜索,發現那裏,我不能刪除ntfs文件系統中的文件通過使用這些命令 – stinepike 2011-03-09 14:28:59

+0

http://support.microsoft.com/kb/320081 – stinepike 2011-03-09 14:29:47

+1

@Nobody:該文章提供了幾個原因爲什麼你*可能*無法使用DeleteFile命令刪除NTFS分區上的文件。它並不是說你不能*刪除這樣的文件。通常情況下,你可以。通過檢查錯誤代碼(使用'GetLastError'),您可以確定是否遇到其中一種不起作用的罕見情況。 – 2011-03-09 14:34:37