Прежде всего привет всем,получить разрешение отказано ошибка при попытке удалить файл
моя проблема в том, что моя программа создает файл, который считывается другой программой и после того, как шляпа моя программа должна удалить файл.
Я использую следующий код ниже, чтобы проверить, существует ли файл, и если какая-либо другая программа использует этот файл. После этого я хочу удалить файл с помощью:
if(isFileRdy("C:\\test\\foo.txt"))remove("C:\\test\\foo.txt");
Есть ли у кого-нибудь идеи, где проблема может быть. Интересно, что это работает для других файлов. И foo.txt
также создан этой программой без специальных прав доступа.
Спасибо :)
/* just suppose the things with argc and argv work, I know it's uggly
but I need it as a call back function later in the code */
BOOL isFileRdy(char *filePath)
{
int argc = 1;
void *argv[1];
argv[0]= (void*) filePath;
return isFileRdyCBF(argv, argc);
}
BOOL isFileRdyCBF(void *argv[], int argc)
{
/* I used */
char *filePath = (char*) argv[0];
FILE *fDes = NULL;
BOOL _fileExists = FALSE;
BOOL _fileBussy = TRUE;
_fileExists = fileExists(filePath);
if(_fileExists)
{
fDes = fopen(filePath, "a+");
if(fDes!=NULL)
{
_fileBussy = FALSE;
if(fclose(fDes)!=0)
{
printf("\nERROR could not close file stream!");
printf("\n '%s'\n\n", filePath);
return FALSE;
}
}
}
return (_fileExists==TRUE && _fileBussy==FALSE) ? TRUE : FALSE;
}
Полностью несвязанный с последующим кодом, первая, наиболее очевидная проблема - обратная косая черта в вашем жестком закодированном имени файла не сбрасывается. – WhozCraig
\ имеет особое значение, и особенно если вы находитесь в платформе Windows. Не могли бы вы предоставить нам полный код вместе с ошибкой, с которой вы столкнулись? –
Пример: 'remove (" C: \\ test \\ foo.txt ");' Это также должно работать: 'remove (" c: /test/foo.txt ");' –