我不知道你將如何檢查文件是否存在,不檢查文件是否存在,但希望這個功能將會幫助你:
#include <sys/stat.h>
if (!fileExists("foo")) { /* foo does not exist */ }
int fileExists (const char *fn)
{
struct stat buf;
int i = stat(fn, &buf);
if (i == 0)
return 1; /* file found */
return 0;
}
如果你的目標是保持代碼乾淨,那麼就使用功能:
int main()
{
if (! renameFiles("fileA", "fileB")) {
fprintf(stderr, "rename failed...\n");
exit EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
int renameFiles(const char *source, const char *destination)
{
int result = -1;
if ((fileExists(source)) && (!fileExists(destination)))
result = rename(source, destination);
if (result == 0)
return 1; /* rename succeeded */
/*
Either `source` does not exist, or `destination`
already exists, or there is some other error (take
a look at `errno` and handle appropriately)
*/
return 0;
}
你可以從renameFiles()
返回自定義錯誤代碼和有條件地處理基於哪個文件或不存在,或有其他問題與rename()
調用錯誤。
很抱歉,在重命名之前檢查文件是否存在效率低下。原來的問題很明顯,如果重命名失敗,這只是一個問題。 – Fred 2012-02-02 14:10:11