1、windows下的mkdir
1)代码
#include<direct.h>
int _mkdir( const char *dirname );
2)参数
dirname是目录的路径名指针
3)返回值
如果新目录的创建时间,这些功能中的每一个返回值 0。 在错误,则函数返回 – 1
2、linux下的mkdir
1)代码
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
2)参数
pathname 路径名字
mode_t 模式
3)函数说明
mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。
4)返回值
若目录创建成功,则返回0;否则返回-1,并将错误记录到全局变量errno中。
5)mode 为不同的权限。
mode 含义
S_IRWXU 00700权限,代表该文件所有者拥有读,写和执行操作的权限
S_IRUSR(S_IREAD) 00400权限,代表该文件所有者拥有可读的权限
S_IWUSR(S_IWRITE) 00200权限,代表该文件所有者拥有可写的权限
S_IXUSR(S_IEXEC) 00100权限,代表该文件所有者拥有执行的权限
S_IRWXG 00070权限,代表该文件用户组拥有读,写和执行操作权限
S_IRGRP 00040权限,代表该文件用户组拥有可读的权限
S_IWGRP 00020权限,代表该文件用户组拥有可写的权限
S_IXGRP 00010权限,代表该文件用户组拥有执行的权限
S_IRWXO 00007权限,代表其他用户拥有读,写和执行操作的权限
S_IROTH 00004权限,代表其他用户拥有可读的权限
S_IWOTH 00002权限,代表其他用户拥有可写的权限
S_IXOTH 00001权限,代表其他用户拥有执行的权限
3、 rmdir函数删除文件夹
头文件:
windows环境下头文件:
#include <direct.h>
linux环境下头文件:
#include <dirent.h>
函数原型:
*int rmdir(const char _Path)
功能及返回值:
函数功能是删除参数指定的文件夹,成功返回0,否则返回-1。
参数说明:
要删除的文件夹路径,可使用绝对路径,可也用相对路径。
备注:
在windows环境下也可使用函数_rmdir函数,使用方法没有区别。
4、头文件:
在windows环境下头文件为:
#include <io.h>
在linux环境下头文件为:
#include <unistd.h>
函数原型:
int access(const char* _Filename, int _AccessMode)
功能及返回值:
该函数功能为确定文件或文件夹的访问权限,如果指定的访问权限有效,则函数返回0,否则返回-1。
参数说明:
_Filename可以是文件路径,也可以是文件夹路径,可以使用绝对路径或相对路径。
_AccessMode表示要验证的文件访问权限,有可读、可写、可执行以及是否存在四种权限, 可以使用 | (位或)来同时验证多个权限,如F_OK|X_OK
_AccessMode 含义
F_OK 判断是否存在
X_OK 文件是否可执行
W_OK 文件是否可写
R_OK 文件是否可读
5、获取当前路径
inline char* TCHARToChar(TCHAR* pTchar)
{
char* pChar = nullptr;
int nLen = wcslen(pTchar) + 1;
pChar = new char[nLen * 2];
WideCharToMultiByte(CP_ACP, 0, pTchar, nLen, pChar, 2 * nLen, NULL, NULL);
return pChar;
}
std::string GetCurrentPath() {
#ifdef _WIN32
TCHAR curr_path[1024];
memset(curr_path, 0, 1024);
::GetModuleFileName(NULL, curr_path, MAX_PATH);
(_tcsrchr(curr_path, '\\'))[1] = 0;
std::string str_curr_path=TCHARToChar(curr_path);
#else
char curr_path[1024];
memset(curr_path, 0, 1024);
getcwd(curr_path, 1024);
sprintf(curr_path, "%s/", curr_path);
std::string str_curr_path = curr_path;
#endif
return str_curr_path;
Windows下实现gettimeofday()函数
#include <time.h>
#ifdef WIN32
#include <windows.h>
#else
#include <sys/time.h>
#endif
#ifdef WIN32
int gettimeofday(struct timeval *tp, void *tzp)
{
time_t clock;
struct tm tm;
SYSTEMTIME wtm;
GetLocalTime(&wtm);
tm.tm_year = wtm.wYear - 1900;
tm.tm_mon = wtm.wMonth - 1;
tm.tm_mday = wtm.wDay;
tm.tm_hour = wtm.wHour;
tm.tm_min = wtm.wMinute;
tm.tm_sec = wtm.wSecond;
tm.tm_isdst = -1;
clock = mktime(&tm);
tp->tv_sec = clock;
tp->tv_usec = wtm.wMilliseconds * 1000;
return (0);
}
#endif
linux下
/**
-
@name: GetLocalTimeWithMs
-
@msg: 获取本地时间,精确到毫秒
-
@param {type}
-
@return: string字符串,格式为YYYYMMDDHHMMSSsss,如:20190710130510368
*/
static string GetLocalTimeWithMs(void)
{
string defaultTime = “19700101000000000”;
try
{
struct timeval curTime;
gettimeofday(&curTime, NULL);
int milli = curTime.tv_usec / 1000;char buffer[80] = {0}; struct tm nowTime; localtime_r(&curTime.tv_sec, &nowTime);//把得到的值存入临时分配的内存中,线程安全 strftime(buffer, sizeof(buffer), "%Y%m%d%H%M%S", &nowTime); char currentTime[84] = {0}; snprintf(currentTime, sizeof(currentTime), "%s%03d", buffer, milli); return currentTime;
}
catch(const std::exception& e)
{
return defaultTime;
}
catch (…)
{
return defaultTime;
}
}