【genius_platform软件平台开发】第八十四讲:windows系统和Linux系统之mkdir函数

1. windows系统下mkdir

  • windows下创建文件夹有两种方法,只需要一个路径的参数:
  • ①使用cmd命令mkdir,举例:system(“mkdir D:\dic”);
    这条命令执行mkdir程序,在D盘创建一个文件夹dic。

  • ②使用windows提供的CreateDictionary函数,需要包含头文件windows.h,使用方法:CreateDictionary("D:\\dic", NULL);
    同样在D盘创建一个文件夹dic,因为转义字符的问题所以用两个斜杠。
    这个命令和函数我就不详细解释了,分别参考mkdir和CreateDictionary的百度百科。
    这里强调一下,这里说的mkdir是cmd命令,CreateDictionary是windows API函数。

  • 代码

#include<direct.h>
int _mkdir( const char *dirname );
  • 参数
dirname是目录的路径名指针
  • 返回值
如果新目录的创建时间,这些功能中的每一个返回值 0。 在错误,则函数返回 – 1,只能创建一级目录,即path倒数第二级必须是已经存在,否则创建不成功。
如果需要创建多级目录
  • windows下mkdir和_mkdir的区别
    没有下划线的位不符合ISO c++ 标准的写法,标准要求带下划线的标准,没有下划线的是为了兼容以前的版本。

  • 如下:

char szPath[256] = { 0x00 };
sprintf_s(szPath, 256,%s/%d/%d/, “D:/SVN”, 520, 1);
char* szBefore = szPath;
while (*szBefore)
{
if (*szBefore ==/)
{
char szDir[128] = { 0x00 };
strncpy_s(szDir, 128,szPath, szBefore - szPath);
int nRet = 0;
if (_access(szDir, 0) != 0)
nRet = _mkdir(szDir);
}
szBefore++;
}
if (_access(szPath, 0) != 0)
_mkdir(szPath);

2. linux系统下mkdir

  • Linux下,mkdir()需要两个参数,第一个是路径,第二个是权限
system("mkdir -p F:\data");
  • 代码
#includ22e <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
  • 参数
pathname 路径名字
mode_t 模式
  • 函数说明
mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。
  • 返回值
若目录创建成功,则返回0;否则返回-1,并将错误记录到全局变量errno中。
  • mode
S_IRUSR
S_IREAD
S_IWUSR
S_IWRITE
S_IXUSR
S_IEXEC
S_IRWXU
This is equivalent to (S_IRUSR | S_IWUSR | S_IXUSR).
S_IRGRP
Read permission bit for the group owner of the file. Usually 040.
S_IWGRP
Write permission bit for the group owner of the file. Usually 020.
S_IXGRP
Execute or search permission bit for the group owner of the file. Usually 010.
S_IRWXG
This is equivalent to (S_IRGRP | S_IWGRP | S_IXGRP).
S_IROTH
Read permission bit for other users. Usually 04.
S_IWOTH
Write permission bit for other users. Usually 02.
S_IXOTH
Execute or search permission bit for other users. Usually 01.
S_IRWXO
This is equivalent to (S_IROTH | S_IWOTH | S_IXOTH).
S_ISUID
This is the set-user-ID on execute bit, usually 04000. See How Change Persona.
S_ISGID
This is the set-group-ID on execute bit, usually 02000. See How Change Persona.
S_ISVTX
This is the sticky bit, usually 01000.

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权限,代表其他用户拥有执行的权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隨意的風

如果你觉得有帮助,期待你的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值