出處:
在我們平時的程式設計時,經常需要判斷檔案或者目錄是否存在,相對來說判斷檔案的存在性比較簡單,目錄則比較複雜。
下面就詳細的介紹幾種方法。
首先關於判斷檔案的存在性:
一、ifstream
在c++中,可以利用ifstream檔案輸入流,當我們直接使用ifstream來建立檔案輸入流的時候,如果檔案不存在則流建立失敗。
ifstream fin(
"hello.txt");
if(!fin)
這是c++中最常用的方式。
二、file
c中也是同樣道理,我們可是file的相關操作。
file
*fh
=fopen(
"hello",
"r");
if(fh
==null)
三、_access
當然c中還有一種方式是直接呼叫c的函式庫。
就是函式 int _access(const char* path,int mode);
這個函式的功能十分強大。
可以看看msdn的詳細介紹
#include
<
io.h
>
#include
<
stdio.h
>
#include
<
stdlib.h
>
intmain(
void)}
這三種方式算是判斷檔案存在比較簡單快捷的方法了。
現在來說說判斷目錄存在的一些方法。
一、findfirstfile
在c++中可以呼叫系統的一些函式,但這種方法稍微顯得複雜一些。
win32_find_data wfd;
bool
rvalue
=false
;handle hfind
=findfirstfile(strpath.c_str(),
&wfd);
if((hfind
!=invalid_handle_value)
&&(wfd.dwfileattributes
&file_attribute_directory))
findclose(hfind);
二、_stat()
現在介紹乙個輕量級的方法
在windows中可以使用_stat() 函式。
宣告:int _stat(const char* path, struct _stat* buffer);
這個函式使用起來非常方便,如下:
struct
_stat filestat;
if((_stat(dir.c_str(),
&filestat) ==0
) &&
(filestat.st_mode
&_s_ifdir))
_s_ifdir 是乙個標誌位,如果是目錄的話,該位就會被系統設定。
在linux底下也有相對應的函式stat();
使用方法基本相同:
struct
stat filestat;
if((stat(dir.c_str(),
&filestat) ==0
) &&
s_isdir(filestat.st_mode))
唯一不同的地方我使用了乙個macro, s_isdir來判斷檔案是否存在,原理實際都一樣的。
上面就是自己使用過的幾種判斷檔案和目錄存在性的一些經驗了,希望對大家有所幫助。
關於C 中如何判斷檔案,目錄存在的若干方法
出處 在我們平時的程式設計時,經常需要判斷檔案或者目錄是否存在,相對來說判斷檔案的存在性比較簡單,目錄則比較複雜。下面就詳細的介紹幾種方法。首先關於判斷檔案的存在性 一 ifstream 在c 中,可以利用ifstream檔案輸入流,當我們直接使用ifstream來建立檔案輸入流的時候,如果檔案不存...
關於C 中如何判斷檔案,目錄存在的若干方法
下面就詳細的介紹幾種方法。首先關於判斷檔案的存在性 一 ifstream 在c 中,可以利用ifstream檔案輸入流,當我們直接使用ifstream來建立檔案輸入流的時候,如果檔案不存在則流建立失敗。ifstream fin hello.txt if fin 三 access 當然c中還有一種方式...
關於C 中如何判斷檔案,目錄存在的若干方法
下面就詳細的介紹幾種方法。首先關於判斷檔案的存在性 一 ifstream 在c 中,可以利用ifstream檔案輸入流,當我們直接使用ifstream來建立檔案輸入流的時候,如果檔案不存在則流建立失敗。ifstream fin hello.txt if fin 三 access 當然c中還有一種方式...