2012-12-21 77 views
0

我想檢查,然後創建一個目錄如果它不存在。檢查和創建目錄

我用下面的代碼:

#define APP_DATA_DIR_CHILD_2 "./child2" 

g_nResult = GetFileAttributes((wchar_t*)APP_DATA_DIR_CHILD_2); 
if (g_nResult <= 0) 
{ 
    g_nResult = mkdir(APP_DATA_DIR_CHILD_2); 
} 

但就是不檢查正常。即使在創建目錄後,我在GetFileAttributes()中返回-1。

有人可以幫忙嗎? PS:我還想確保代碼在Linux和Windows上都能正常工作。

回答

1

更換

#define APP_DATA_DIR_CHILD_2     "./child2" 
g_nResult = GetFileAttributes((wchar_t*)APP_DATA_DIR_CHILD_2); 

通過(如果Unicode的定義)

#define APP_DATA_DIR_CHILD_2     L"./child2" 
g_nResult = GetFileAttributes(APP_DATA_DIR_CHILD_2); 

你的代碼是遠便攜式...使用統計,而不是

struct stat sts; 
if (stat(APP_DATA_DIR_CHILD_2, &sts) != 0) { 
    // Fail to get info about the file, may not exist... 
} 
else { 
    if (S_ISDIR(sts.st_mode)) { /* The file is a directory... */ } 
} 

看看文檔:http://linux.die.net/man/2/stat

+0

可以請你解釋我將如何使用stat,這樣我可以使我的代碼便攜。此外,與上述變化,我得到以下警告: 警告C4133:「功能」:不兼容的類型 - 從「無符號短[9]」到「爲const char *」 – Sunny

+0

等一下我只是檢查和GetFileAttributes()的作品上llinux也是如此。那麼我的代碼如何不可移植? – Sunny

+1

@孫尼你在哪裏找到這個?其中包括 ?這個函數沒有在我的Linux機器的任何.h文件中定義...並且我找不到任何文檔... – benjarobin