2013-11-27 117 views
1

這是一個從用戶處獲取文件夾名稱,創建文本文件並在稍後將其刪除的功能。刪除fopen成功創建的文件時權限被拒絕

void function(string LogFolder) 
{ 
    fopen((LogFolder+"/test.txt").c_str(),"w"); 
    cout<<"The errorno of fopen "<<errno<<endl; 
    remove((LogFolder+"/test.txt").c_str()); 
    cout<<"The errorno of remove "<<errno<<endl; 
} 

OUTPUT:[意思是文件已成功創建]
的的fopen 0 errorno
除去13的errorno [就是說拒絕權限]

正如你可以看到該文件夾已成功刪除而不是
A link to understand error codes

+3

在嘗試刪除文件夾之前,您應該使用'fclose()'。 –

+3

除非您真的知道上一個功能失敗,否則不要檢查errno。如果一個函數沒有失敗,'errno'的值是未指定的。 –

+0

會記住這一點。 – iajnr

回答

3

您需要首先關閉文件:

void function(string LogFolder) 
{ 
    // Acquire file handle 
    FILE* fp = fopen((LogFolder+"/test.txt").c_str(),"w"); 

    if(fp == NULL) // check if file creation failed 
    { 
      cout<<"The errorno of fopen "<<errno<<endl; 
      return; 
    } 

    // close opened file 
    if(fclose(fp) != 0) 
    { 
     cout<<"The errorno of fclose "<<errno<<endl; 
    } 


    if(remove((LogFolder+"/test.txt").c_str()) != 0) 
    { 
      cout<<"The errorno of remove "<<errno<<endl; 
    } 
} 
+0

完美工作。 – iajnr

1

您可能需要設置文件夾的執行權限以及寫入權限。

1

這是因爲該文件仍處於打開狀態。你應該在fclose()它刪除文件夾之前。 喜歡的東西

void function(string LogFolder) 
{ 
    FILE *fp = fopen((LogFolder+"/test.txt").c_str(),"w"); 
    cout<<"The errorno of fopen "<<errno<<endl; 
    fclose(fp); 
    remove((LogFolder+"/test.txt").c_str()); 
    cout<<"The errorno of remove "<<errno<<endl; 
} 
+0

工作完美。謝謝。 – iajnr

2

對於初學者來說,你是不是創建和刪除文件夾,而是一個文件名爲test.txt文件夾內。

您的問題是,您需要先關閉文件,然後才能將其刪除。請嘗試以下操作

void function(string LogFolder) 
{ 
    FILE* myFile = fopen((LogFolder+"/test.txt").c_str(),"w"); 
    cout<<"The errorno of fopen "<<errno<<endl; 
    fclose(myFile); 
    cout<<"The errorno of fclose "<<errno<<endl; 
    remove((LogFolder+"/test.txt").c_str()); 
    cout<<"The errorno of remove "<<errno<<endl; 
} 
+0

編輯這個問題,修復工作完美。 – iajnr

相關問題