精华内容
下载资源
问答
  • C++判断文件是否存在

    2012-04-27 00:03:54
    C++ C语言 判断文件是否存在,有多种方法。
  • c++判断文件是否存在

    千次阅读 2019-04-08 10:51:07
    Fastest way to check if a file exist using standard C++/C++11/C? https://stackoverflow.com/questions/12774207/fastest-way-to-check-if-a-file-exist-using-standard-c-c11-c Well I threw together a t...

     

    Fastest way to check if a file exist using standard C++/C++11/C?

    https://stackoverflow.com/questions/12774207/fastest-way-to-check-if-a-file-exist-using-standard-c-c11-c

    Well I threw together a test program that ran each of these methods 100,000 times, half on files that existed and half on files that didn't.

     
    1. #include <sys/stat.h>

    2. #include <unistd.h>

    3. #include <string>

    4.  
    5. inline bool exists_test0 (const std::string& name) {

    6. ifstream f(name.c_str());

    7. return f.good();

    8. }

    9.  
    10. inline bool exists_test1 (const std::string& name) {

    11. if (FILE *file = fopen(name.c_str(), "r")) {

    12. fclose(file);

    13. return true;

    14. } else {

    15. return false;

    16. }

    17. }

    18.  
    19. inline bool exists_test2 (const std::string& name) {

    20. return ( access( name.c_str(), F_OK ) != -1 );

    21. }

    22.  
    23. inline bool exists_test3 (const std::string& name) {

    24. struct stat buffer;

    25. return (stat (name.c_str(), &buffer) == 0);

    26. }

    Results for total time to run the 100,000 calls averaged over 5 runs,

     
    1. Method exists_test0 (ifstream): **0.485s**

    2. Method exists_test1 (FILE fopen): **0.302s**

    3. Method exists_test2 (posix access()): **0.202s**

    4. Method exists_test3 (posix stat()): **0.134s**

     The stat() function provided the best performance on my system (Linux, compiled with g++), with a standard fopen call being your best bet if you for some reason refuse to use POSIX functions.

    Also in Visual Studio 2015: 

     
    1. #include <experimental/filesystem>

    2.  
    3. bool file_exists(std::string fn)

    4. {

    5. std::experimental::filesystem::exists("helloworld.txt");

    6. }

    since C++17, only:

    std::filesystem::exists("helloworld.txt");

    转载于:https://blog.csdn.net/sinat_16577223/article/details/82025089 

    展开全文
  • c++ 判断文件是否存在

    2014-10-15 18:05:13
    bool fileExist(const string& name) { ifstream ifs(name); if(ifs.is_open()) { ifs.close(); return true; } else { return false; } }
    bool fileExist(const string& name)
    {
        ifstream ifs(name);
        if(ifs.is_open()) {
            ifs.close();
            return true;
        }
        else {
            return false;
        }
    }
    
    展开全文
  • C++ 判断文件是否存在

    千次阅读 2008-03-05 09:42:00
    #include #include using namespace std; #define FILENAME "stat.dat" int main() { fstream _file; _file.open(FILENAME,ios::in); if(!_file) ... cout已经存在"; } return 0; } 
    #include <iostream>
    
    #include <fstream>
    using namespace std;
    #define FILENAME "stat.dat"
    int main()
    {
         fstream _file;
         _file.open(FILENAME,ios::in);
         if(!_file)
         {
             cout<<FILENAME<<"没有被创建";
          }
          else
          {
              cout<<FILENAME<<"已经存在";
          }
          return 0;
    展开全文
  • c++ 判断文件是否存在的几种方法

    万次阅读 2019-09-12 11:22:36
    一般而言,下述方法都可以检查文件是否存在: 使用ifstream打开文件流,成功则存在,失败则不存在 以fopen读方式打开文件,成功则存在,否则不存在 使用access函数获取文件状态,成功则存在,否则不存在 使用...

    一般方法


    一般而言,下述方法都可以检查文件是否存在:

    • 使用ifstream打开文件流,成功则存在,失败则不存在
    • 以fopen读方式打开文件,成功则存在,否则不存在
    • 使用access函数获取文件状态,成功则存在,否则不存在
    • 使用stat函数获取文件状态,成功则存在,否则不存在

    代码如下:

    #include <sys/stat.h>
    #include <unistd.h>
    #include <string>
    #include <fstream>
    
    inline bool exists_test0 (const std::string& name) {
        ifstream f(name.c_str());
        return f.good();
    }
    
    inline bool exists_test1 (const std::string& name) {
        if (FILE *file = fopen(name.c_str(), "r")) {
            fclose(file);
            return true;
        } else {
            return false;
        }   
    }
    
    inline bool exists_test2 (const std::string& name) {
        return ( access( name.c_str(), F_OK ) != -1 );
    }
    
    inline bool exists_test3 (const std::string& name) {
      struct stat buffer;   
      return (stat (name.c_str(), &buffer) == 0); 
    }
    

    参考资料中有性能测试对比,结果表明,使用 stat() 函数的方式性能最好。

    # Results for total time to run the 100,000 calls averaged over 5 runs,
    
    Method exists_test0 (ifstream): **0.485s**
    Method exists_test1 (FILE fopen): **0.302s**
    Method exists_test2 (posix access()): **0.202s**
    Method exists_test3 (posix stat()): **0.134s**
    

    boost库


    boost.filesystem在发生错误的时候会抛出异常,但是在大部分情况下这些异常是可以忽略的,例如,在检查文件是否存在的时候,发生错误可以等同于文件不存在。

    虽然boost.filesystem也提供了重载函数,通过输出参数返回错误来代替异常,但是在每个调用点都得定义一个输出参数,稍显麻烦。

    所以,为了简化客户代码,我们实现了一些包装函数,如下所示:

    bool IsFileExistent(const boost::filesystem::path& path) {
        boost::system:error_code error;
        return boost::filesystem::is_regular_file(path, error);
    }
    

    上面的函数用来检查文件是否存在,使用了boost::filesystem::is_regular_file。当path指向一个“常规文件”的时候,认为该文件存在;否则其它任何情况都认为文件不存在。

    对于只有常规文件的情况,该函数没有问题。但是,如果还存在其他文件时,如符号链接文件时,则返回文件不存在。

    事实上,用boost::filesystem::status获取时,会返回symlink_file,boost.filesystem将它们视为符号链接文件。

    不论是常规文件还是符号链接文件,呈现给用户的都是能够正常使用的文件。

    所以,不能单纯地用boost::filesystem::is_regular_file来检查文件是否存在了,下面是包装函数的改进版本:

    bool IsFileExistent(const boost::filesystem::path& path) {
    
        boost::system:error_code error;
        auto file_status = boost::filesystem::status(path, error);
        if (error) {
            return false;
        }
    
        if (! boost::filesystem::exists(file_status)) {
            return false;
        }
    
        if (boost::filesystem::is_directory(file_status)) {
            return false;
        }
    
        return true;
    }
    

    首先,通过boost::filesystem::status获取文件的信息,如果发生错误,则认为文件不存在。

    然后,使用boost::filesystem::exists判断文件是否存在,该函数不区分文件夹和文件,所以最后还要使用boost::filesystem::is_directory判断一下是否文件夹,只要不是文件夹,都认为文件是存在的。


    参考资料:


    Fastest way to check if a file exist using standard C++/C++11/C?
    使用boost.filesystem检查文件是否存在的正确方式

    展开全文
  • C/C++判断文件是否存在

    千次阅读 2015-12-24 22:48:07
    C/C++判断文件是否存在 The following is the most common method for checking if file exist: #include bool FileExist(const char* FileName) { struct stat my_stat; return (stat(FileName, &m
  • c++判断文件是否存在+获取文件大小

    千次阅读 2019-05-05 17:07:47
    GetFileAttributes( m_Output) == -1 //判断文件是否存在若不存在返回-1 返回字段 返回值 属性类型 FILE_ATTRIBUTE_READONLY 1 只读 FILE_...
  • _access, _waccess这个函数是C++判断文件是否存在以及文件访问权限的非常实用的函数:# _access 和 _waccess # Determine file-access permission.int _access( const char *path, int mode );int _waccess( const...
  • c/c++判断文件是否存在

    千次阅读 2013-09-20 11:20:06
    #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int main() { fstream file; char filename[100]; FILE *fp; strcpy(filename, "test.txt");... file
  • //返回指针偏离文件头的位置(即文件中字符个数) return n; } bool exist(const char * lpPath){ /* Check for existence */ if( (_access( "ACCESS.C", 0 )) != -1 ) { return true; }else{ return ...
  • C++ 判断文件文件夹是否存在

    万次阅读 2017-08-17 10:44:42
    判断文件是否存在 ifstream 用ifstream创建文件的输入流,如果文件不存在,则输入流创建失败。 ifstream fin("hello.txt"); if(!fin){ //TODO } File 用File来判断文件是否存在 File *fh = fopen("hello.txt...
  • #include <iostream> #include <stdio.h> #include <...// 判断文件是否存在 bool IsPathExist(const std::string &path) { if (access(path.c_str(), 0) == F_OK) { return true;
  • C++读入文件 判断文件 是否存在是否为空 及 是否结束
  • 1. C# 判断文件/文件夹 是否 存在
  • C++ 判断目录文件是否存在

    千次阅读 2019-03-25 10:51:39
    //判断目录文件是否存在 #include <iostream> #include <dirent.h> #include <string> using namespace std; int main() { std::string name; std::string path = "./" + name; auto dir = ...
  • C++ 判断一个文件是否存在存在则删除。
  • C++中如何判断文件是否存在

    万次阅读 2018-03-29 22:25:11
    1 致谢 感谢网友roger_77提供的资料 链接如下: ...需要判断文件是否存在 于是就在想在C++中如何实现这个小功能 然后就找到了上文中说到的资料 3解决方案 测试代码如下: // Test_VS2013...
  • 直接贴上代码,做个知识小积累 #include <iostream> #include <fstream> #include <... string file_path = "C:\\Users\\JSM... if (_access(file_path.c_str(), 0) == 0) {//文件存在删除 if (remove
  • C++访问判断文件夹是否存在并访问文件夹以及文件, C++访问判断文件夹是否存在并访问文件夹以及文件
  • man了一下才知道该函数主要用于文件读取方面——判断文件是否存在,并判断文件是否可写。Linux下,该函数为access,位于头文件<unistd.h>中,而在标准C++中,该函数为_access,位于头文件<io...
  • c++ 判断文件或文件夹是否存在

    千次阅读 2018-03-18 11:54:35
    在Windows应用项目中,几乎总会需要用到一些文件系统相关的函数,如:判断文件是否存在,判断文件夹是否为空,删除文件夹及其所有子项,计算文件夹的大小,等等。不知为何,Windows并未提供直接的API来完成这些操作...
  • 在使用C++进行系统开发时,经常用到对文件进行操作的方法,比如判断文件是否存在、获得文件的大小和创建时间等等。下面是我写的一个关于文件操作的类,里面不含有文件读写操作,只含有文件的外围操作。如果...
  • 3,java 中判断文件是否存在就简单的多了; String path="XXXXX"; File fl=new File(path); return fl.exists( ); 转载于:https://my.oschina.net/u/592116/blog/387391
  • #include #include using namespace std; int main( void ) { fstream _file; _file.open("./文件夹/*.dat", ios::in); if(!_file) ... cout已经存在!...#include <Fileapi.h> //设置文件属性
  • C++判断文件夹是否存在

    千次阅读 2013-02-01 14:58:56
    一、判断文件夹是否存在:  1.用CreateDirectory(".//FileManege",NULL);如果文件夹FileManege不存在,则创建。  2.或者if(_access(".//FileManege",0)==-1),表示FileManege不存在。  3.或者BOOL ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,717
精华内容 51,486
关键字:

c++判断文件是否存在

c++ 订阅