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);