您的位置:首页 > 其它

创建多级目录

2016-01-14 14:53 375 查看
#include <iostream>
#include <stdlib.h>
#include <string>
#include <string.h>

using namespace std;

#pragma warning(disable: 4996)

#ifdef _WIN32
#include <direct.h>
#include <io.h>
#elif _LINUX
#include <stdarg.h>
#include <sys/stat.h>
#endif

#ifdef _WIN32
#define ACCESS _access
#define MKDIR(a) _mkdir((a))
#elif _LINUX
#define ACCESS access
#define MKDIR(a) mkdir((a),0755)
#endif

int CreatDir( char *pDir )
{
int i = 0;
int iRet;
int iLen;
char* pszDir;

if ( NULL == pDir )
{
return 0;
}

int len = strlen( pDir );
pszDir = new char[len+1];
strcpy(pszDir,pDir);

iLen = strlen( pszDir );

// 创建中间目录
for ( i = 0; i < iLen; i++ )
{
if ( pszDir[i] == '\\' || pszDir[i] == '/' )
{
pszDir[i] = '\0';

//如果不存在,创建
iRet = ACCESS( pszDir, 0 ); //参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。
if ( iRet != 0 )
{
iRet = MKDIR( pszDir );  //建立新目录
if ( iRet != 0 )
{
return -1;
}
}
//支持linux,将所有\换成/
pszDir[i] = '/';
}
}

iRet = MKDIR( pszDir );

delete[] pszDir;
pszDir = NULL;

return iRet;
}

void main()
{

char* pc = "E:/Save/Game/object/123/abc/1.txt";

cout << "Original:  " << pc << endl;

string name( pc );

int iPonit = name.find( "Game" );

name.insert(iPonit,"ResBak/");

int i = name.find_last_of("/");

name = name.substr(0,i);

cout << "Name:      " << name << endl;

const int len = name.length();

pc = NULL;
pc = new char[len + 1];

strcpy( pc, name.c_str() );

cout << "Pc:        " << pc << endl;

int Result = CreatDir( pc );

delete[] pc;
pc = NULL;

system( "pause" );
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: