当前位置: 技术问答>linux和unix
有关fopen的问题
来源: 互联网 发布时间:2016-03-02
本文导语: Windows下用fopen创建文件,如fopen("\mnt\usb\std.txt","wb")。如果mnt目录下没有usb目录,程序会自动创建usb目录,但linux就会失败。请问如何在linux下实现目录的自动创建。 | linux下由于牵扯对不同的目...
Windows下用fopen创建文件,如fopen("\mnt\usb\std.txt","wb")。如果mnt目录下没有usb目录,程序会自动创建usb目录,但linux就会失败。请问如何在linux下实现目录的自动创建。
|
linux下由于牵扯对不同的目录有不同的权限问题,fopen没法创建目录.
mkdir也只能创建一级目录,不能递归创建.要想递归创建的话,要自己写了.
这是个例子,你可以参考一下
p=buff;
p1=buff1;
memset(buff1,0,user_data_len);
if(*p=='/'){*p1='/';p++;} //Èç¹ûµÚÒ»¸ö×Ö·ûΪ'/'ÔòΪ¸úĿ¼,»¹Ó¦µ±»ñÈ¡µ±Ç°Ä¿Â¼
//printf("creatdir 3n");
while((len=strcspn(p,"/")))
{
if(len==(int)strlen(p))break;
strncat(p1,p,len+1);
if(access(p1,F_OK)!=0) //Èç¹ûĿ¼²»´æÔÚ
if(mkdir(p1,S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH)!=0)
{
return -1; //½¨Á¢Ä¿Â¼
}
p+=len;
p++;
}
mkdir也只能创建一级目录,不能递归创建.要想递归创建的话,要自己写了.
这是个例子,你可以参考一下
p=buff;
p1=buff1;
memset(buff1,0,user_data_len);
if(*p=='/'){*p1='/';p++;} //Èç¹ûµÚÒ»¸ö×Ö·ûΪ'/'ÔòΪ¸úĿ¼,»¹Ó¦µ±»ñÈ¡µ±Ç°Ä¿Â¼
//printf("creatdir 3n");
while((len=strcspn(p,"/")))
{
if(len==(int)strlen(p))break;
strncat(p1,p,len+1);
if(access(p1,F_OK)!=0) //Èç¹ûĿ¼²»´æÔÚ
if(mkdir(p1,S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH)!=0)
{
return -1; //½¨Á¢Ä¿Â¼
}
p+=len;
p++;
}
|
可能需要自己来写这个API了。
|
或者在创建前判断一下是否存在该目录.
文件是可以自动创建的
文件是可以自动创建的