wind和linux下mkdir、 rmdir以及 access

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值