博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++文件操作 判断文件是否存在和文件大小
阅读量:6478 次
发布时间:2019-06-23

本文共 1704 字,大约阅读时间需要 5 分钟。

在使用C++进行系统开发时,经常用到对文件进行操作的方法,比如判断文件是否存在、获得文件的大小和创建时间等等。下面是我写的一个关于文件操作的类,里面不含有文件读写操作,只含有文件的外围操作。如果读者需要添加文件的读写操作,可以在类里面添加方法,使用文件流操作fstream进行读写。

编译和运行环境是在VC++6.0,File.h如下:

InBlock.gif#ifndef _FILE_H

InBlock.gif#define _FILE_H

InBlock.gif

#include <
string>

InBlock.gif

namespace zpp 

InBlock.gif{

InBlock.gif
class File {

InBlock.gif  
private:

InBlock.gif    std::
string fileName;

InBlock.gif

  
public:

InBlock.gif    File(
const std::
string& aFileName);

InBlock.gif    ~File();

InBlock.gif

    
bool exist();

InBlock.gif    
bool isDirectory();

InBlock.gif

    
long getFileSize();

InBlock.gif    
char getFileDrive();

InBlock.gif    std::
string getCreateTime();

InBlock.gif    std::
string getModifiedTime();

InBlock.gif  };

InBlock.gif}

InBlock.gif

#endif
File.cpp文件如下:

InBlock.gif#include <File.h>

InBlock.gif#include <sys/stat.h>

InBlock.gif#include <time.h>

InBlock.gif

namespace zpp

InBlock.gif{

InBlock.gif  File::File(
const std::
string& aFileName):fileName(aFileName) {

InBlock.gif  

InBlock.gif  }

InBlock.gif

  File::~File() {

InBlock.gif  

InBlock.gif  }

InBlock.gif

  
bool File::exist() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
int result;

InBlock.gif    result = _stat(fileName.c_str(), &buf);

InBlock.gif    
return (result == 0);

InBlock.gif  }

InBlock.gif

  
bool File::isDirectory() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
if ( _stat(fileName.c_str(), &buf) != 0 ) {    
//判断是否存在

InBlock.gif      
return 
false;

InBlock.gif    }

InBlock.gif    
return ( (buf.st_mode & S_IFDIR) !=0 );

InBlock.gif  }

InBlock.gif

  
long File::getFileSize() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
int result;

InBlock.gif    result = _stat(fileName.c_str(), &buf);

InBlock.gif    
if ( result == 0 ) {

InBlock.gif      
return buf.st_size;

InBlock.gif    }

InBlock.gif    
return 0;

InBlock.gif  }

InBlock.gif

  
char File::getFileDrive() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
int result;

InBlock.gif    result = _stat(fileName.c_str(), &buf);

InBlock.gif    
if ( result == 0 ) {

InBlock.gif      
return ( buf.st_dev + 'A' );

InBlock.gif    }

InBlock.gif    
return '0';

InBlock.gif  }

InBlock.gif

  std::
string File::getCreateTime() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
int result;

InBlock.gif    result = _stat(fileName.c_str(), &buf);

InBlock.gif    
if ( result == 0 ) {

InBlock.gif      
return std::
string( ctime(&buf.st_ctime) );

InBlock.gif    }

InBlock.gif    
return 
"0";

InBlock.gif  }

InBlock.gif

  std::
string File::getModifiedTime() {

InBlock.gif    
struct _stat buf;

InBlock.gif    
int result;

InBlock.gif    result = _stat(fileName.c_str(), &buf);

InBlock.gif    
if ( result == 0 ) {

InBlock.gif      
return std::
string( ctime(&buf.st_atime) );

InBlock.gif    }

InBlock.gif    
return 
"0";

InBlock.gif  }

InBlock.gif}
     本文转自panpan3210 51CTO博客,原文链接:http://blog.51cto.com/panpan/102625
,如需转载请自行联系原作者
你可能感兴趣的文章
js 数组
查看>>
Linux scp命令详解
查看>>
cell reuse & disposebag
查看>>
【故障处理】ORA-12545: Connect failed because target host or object does not exist
查看>>
云时代,程序员将面临的分化
查看>>
js判断移动端是否安装某款app的多种方法
查看>>
学习angularjs的内置API函数
查看>>
4、输出名称 Exported names
查看>>
Pre-echo(预回声),瞬态信号检测与TNS
查看>>
【转载】如何发送和接收 Windows Phone 的 Raw 通知
查看>>
poj2378
查看>>
Java文件清单列表
查看>>
js url传值中文乱码之解决之道
查看>>
Trusty TEE
查看>>
[LeetCode] Reverse String 翻转字符串
查看>>
学习iOS【3】数组、词典和集合
查看>>
Hessian 原理分析--转
查看>>
转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
查看>>
easyui传入map的数据前台展示出tree格式数据
查看>>
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
查看>>