編輯:這個問題不是我的C++。問題在於我在GameMaker Studio中如何調用共享庫,這就是爲什麼它不起作用。如何檢查文件是否存在(不管其文件類型)?
我試圖檢測一個文件是否存在,並且我已經在互聯網上嘗試了很多方法,並且它們都沒有工作。這裏有一個例子:
double file_exists(char *filename)
{
std::ifstream infile(filename);
return infile.good();
}
我認爲它只會使用文本文件。例如,這不起作用:
file_exists("/usr/bin/gedit");
...因爲這是一個Linux可執行文件。
我想要一種方法來檢查文件是否存在,而不管它的文件類型如何。
在Windows,這很容易實現,像這樣:
double file_exists(char* filename)
{
DWORD fileAtt = GetFileAttributesA(filename);
if(fileAtt == INVALID_FILE_ATTRIBUTES)
throw GetLastError();
return (bool)((fileAtt&FILE_ATTRIBUTE_DIRECTORY) == 0);
}
但我在Linux上,我需要上面的代碼中,將工作在Linux上的等效。
['stat'](http://man7.org/linux/man-pages/man2/stat.2.html)或['access'](http://man7.org/linux /man-pages/man2/access.2.html)是兩個可以使用的POSIX函數。或者使用[Boost文件系統](http://www.boost.org/doc/libs/1_64_0/libs/filesystem/doc/index.htm)或即將推出的[標準文件系統庫](http://en.cppreference。 COM/W/CPP /文件系統)。 –
此外,使用C++流打開文件時,系統不關心其「文件類型」。文件是文件是文件...「文本」文件只是應用程序解釋內容的一種方式,流本身並不真正關心內容。 –
你的例子適用於''/ usr/bin/gedit'' – Galik