inline bool exists_test0 (const std::string& name) { std::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); } int fileSize(const char *add){ std::ifstream mySource; mySource.open(add, std::ios_base::binary); mySource.seekg(0,std::ios_base::end); int size = mySource.tellg(); mySource.close(); return size; } int get_file_size(std::string filename) // path to file { FILE *p_file = NULL; p_file = fopen(filename.c_str(),"rb"); fseek(p_file,0,SEEK_END); int size = ftell(p_file); fclose(p_file); return size; } long GetFileSize(std::string filename) { struct stat stat_buf; int rc = stat(filename.c_str(), &stat_buf); return rc == 0 ? stat_buf.st_size : -1; } long FdGetFileSize(int fd) { struct stat stat_buf; int rc = fstat(fd, &stat_buf); return rc == 0 ? stat_buf.st_size : -1; }