opendir
成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元相山做網(wǎng)站,已為上家服務(wù),為相山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
加上
finddir
這兩個(gè)函數(shù) 可以遍歷一個(gè)文件夾下面的所有文件節(jié)點(diǎn)
根據(jù)節(jié)點(diǎn)屬性 可以判斷是文件 還是文件夾。
具體用法 自行百度。 很多選項(xiàng)
你貼的這個(gè)函數(shù)PathFileExists并不是C語(yǔ)言提供的庫(kù)函數(shù),而是windows系統(tǒng)提供的系統(tǒng)調(diào)用,如果你是初學(xué)者,盡量用C語(yǔ)言提供的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)功能,你可以這樣:
int exist(char *file) //傳入想要判斷的路徑字符串指針
{
FILE *fp;
fp=fopen(file,"r"); //fopen是一個(gè)C庫(kù)函數(shù),用于打開(kāi)文件,"r"是只讀模式,在這種模式下,如果文件存在,則能成功以只讀模式打開(kāi),fopen返回一個(gè)非0的文件描述符,如果文件不存在,則fopen返回NULL(NULL意思是空)。正好可以利用這一點(diǎn)來(lái)判斷文件是否存在
if(fp=NULL)
return 0; //不存在返回0
else
{
fclose(fp); //存在的話,要先把之前打開(kāi)的文件關(guān)掉
return 1; //然后返回1
}
}
這樣,你就可用這里定義的exist函數(shù)判斷文件是否存在了。比如
if(exist("a.txt")==0)printf("不存在!");
else printf("存在!");
如果你真想用PathFileExists這個(gè)函數(shù),那么也很簡(jiǎn)單,LPCTSTR你可以簡(jiǎn)單理解為就相當(dāng)于char*,這是windows封裝的一個(gè)數(shù)據(jù)類型。_in是一個(gè)修飾符,表示參數(shù)是傳入給PathFileExists用的而不是由PathFileExists傳出來(lái)的。這個(gè)函數(shù)可以這樣用:
if(PathFileExists("a.txt")==FALSE)printf("不存在!");
else printf("存在!");
用這個(gè)函數(shù)時(shí)注意加頭文件windows.h
有問(wèn)題請(qǐng)繼續(xù)追問(wèn)啊
頭文件:io.h
功 能: 確定文件或文件夾的訪問(wèn)權(quán)限。即,檢查某個(gè)文件的存取方式,比如說(shuō)是只讀方式、只寫(xiě)方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
參數(shù)說(shuō)明:
filenpath
文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名
備注:當(dāng)該參數(shù)為文件的時(shí)候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時(shí)候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫(xiě)權(quán)限
mode
要判斷的模式
在頭文件unistd.h中的預(yù)定義如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具體含義如下:
00 只判斷是否存在
02 只判斷是否有寫(xiě)權(quán)限
04 只判斷是否有讀權(quán)限
06 判斷是否有讀并且有寫(xiě)權(quán)限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
頭文件:io.h
功 能: 確定文件或文件夾的訪問(wèn)權(quán)限。即,檢查某個(gè)文件的存取方式,比如說(shuō)是只讀方式、只寫(xiě)方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
參數(shù)說(shuō)明:
filenpath
文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名
備注:當(dāng)該參數(shù)為文件的時(shí)候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時(shí)候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫(xiě)權(quán)限
mode
要判斷的模式
在頭文件unistd.h中的預(yù)定義如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具體含義如下:
00 只判斷是否存在
02 只判斷是否有寫(xiě)權(quán)限
04 只判斷是否有讀權(quán)限
06 判斷是否有讀并且有寫(xiě)權(quán)限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
使用c語(yǔ)言庫(kù)中的_access()函數(shù)判斷文件夾是否存在。該函數(shù)的參數(shù)中文件夾路徑中不允許由空格。因此下面的代碼運(yùn)行錯(cuò)誤。 其實(shí)檢查的是e盤(pán)的my文件夾。
代碼:#include io.h
#include stdio.h
#include stdlib.h
void main( void ){/* Check for existence */