關於C 中如何判斷檔案,目錄存在的若干方法

2021-06-09 12:28:35 字數 1777 閱讀 4824

出處:

在我們平時的程式設計時,經常需要判斷檔案或者目錄是否存在,相對來說判斷檔案的存在性比較簡單,目錄則比較複雜。

下面就詳細的介紹幾種方法。

首先關於判斷檔案的存在性:

一、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中還有一種方式...