这是一个从用户获取文件夹名称,创建文本文件并稍后应删除它的函数。
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;
}
输出:
fopen 0的错误号[表示文件已成功创建。]
删除错误13 [意味着权限被拒绝]
如您所见,该文件夹已成功删除不 A link to understand error codes
答案 0 :(得分: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;
}
}
答案 1 :(得分: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;
}
答案 2 :(得分:1)
您可能需要设置文件夹的执行权限以及写入权限。
答案 3 :(得分: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;
}