window程序移植到linux下(一)

1.   window下获取文件状态 

CFileStatus status; 

file.GetStatus( status );

对应linux下获取方法:

包含#include<sys/stat.h> #include<unistd.h>

struct stat status;

使用函数int stat(const char * file_name,struct stat *buf);返回值等于0代表成功。

struct stat
{
dev_t st_dev; /*device*/
ino_t st_ino; /*inode*/
mode_t st_mode; /*protection*/
nlink_t st_nlink; /*number of hard links */
uid_t st_uid; /*user ID of owner*/
gid_t st_gid; /*group ID of owner*/
dev_t st_rdev; /*device type */
off_t st_size; /*total size, in bytes*/
unsigned long st_blksize; /*blocksize for filesystem I/O */
unsigned long st_blocks; /*number of blocks allocated*/
time_t st_atime; /* time of lastaccess*/
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
};

2.      window下文件操作

CFile file

file.Open(sFileName,CFile::modeRead|CFile::shareDenyNone )

file.Read(buf,g_nMaxSize)

linux下对应改成

int fd = open(sFileName,O_RDONLY);返回-1代表失败

read(fd,buf,g_nMaxSize);

3.window 下获取系统临时目录

TCHAR szOutputDir[MAX_PATH];
    if (GetTempPath(MAX_PATH, szOutputDir))//得到系统临时目录

linux下获取

char szTempFile[] = "/tmp"

char pszTempFile = mktemp(szTempFile); 

4.window下删除文件

::DeleteFile(strPath.c_str());

linux下使用

int remove(const char *pathname);

5.window下 uuid_t uid; // uuid_t is a struct

linux下需要安装

yum install uuid-devel   CentOs系统

之后包含uuid.h头文件

6.window 下创建文件目录

::CreateDirectory((*it).c_str(),NULL);

linux下使用 int mkdir(const char *pathname, mode_t mode);函数

7.window下文件查找

 CFileFind tempFind; 
    char sTempFileFind[200] ;
    
    sprintf(sTempFileFind,"%s*.*",sDirName); 
    BOOL IsFinded = tempFind.FindFile(sTempFileFind); 
    while (IsFinded) 
    { 
        IsFinded = tempFind.FindNextFile(); 
        
        if (!tempFind.IsDots()) 
        { 
            char sFoundFileName[200]; 
            strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200)); 
            
            if (tempFind.IsDirectory()) 
            { 
                char sTempDir[200]; 
                sprintf(sTempDir,"%s\\%s",sDirName,sFoundFileName); 
                DeleteDirectory(sTempDir); 
            } 
            else 
            { 
                char sTempFileName[200]; 
                sprintf(sTempFileName,"%s\\%s",sDirName,sFoundFileName); 
if ( ExceptName!=NULL && strcmp(sTempFileName,ExceptName)==0 )
{
  continue;
}
DeleteFile(sTempFileName); 
            } 
        } 
    } 
    tempFind.Close(); 

替换成linux下文件遍历

  char sTempFileFind[200] ;
    
    sprintf(sTempFileFind,"%s*.*",sDirName); 
    DIR *d; //声明一个句柄
    struct dirent *file; //readdir函数的返回值就存放在这个结构体中
    struct stat sb;
    if (!(d = opendir(sTempFileFind))) {
    AxNote(1, "error opendir %s!!!\n");
    return -1;
    }
    while ((file = readdir(d)) != NULL)
    { 
    if (strncmp(file->d_name, ".", 1) == 0)
continue;
if (stat(file->d_name, &sb) >= 0 && S_ISDIR(sb.st_mode))
continue;
char sFoundFileName[200];
strcpy(sFoundFileName,file->d_name);
       if (S_ISDIR(sb.st_mode))
            { 
                char sTempDir[200]; 
                sprintf(sTempDir,"%s\\%s",sDirName,sFoundFileName); 
                DeleteDirectory(sTempDir); 
            } 
            else 
            { 
                char sTempFileName[200]; 
                sprintf(sTempFileName,"%s\\%s",sDirName,sFoundFileName); 
if ( ExceptName!=NULL && strcmp(sTempFileName,ExceptName)==0 )
{
  continue;
}
remove(sTempFileName);
            } 
    } 
closedir(d);











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值