linux c 关于文件目录操作的总结

这篇文章主要是关于文件目录的相关操作,在linux平台下也是经常用到的一个操作,所以这篇文章应该先于上一篇关于文件的操作,一般我们创建文件夹后,才会进行关于文件的一些操作。提示一点创建目录时候,这能一级一级的创建不能创建多级,如若创建多级,则需要循环创建。


这里先介绍一下关于当前工作路径的问题,一般我们都是在某一个目录下进行文件或者文件夹的操作,但是一旦我们对文件进行夸目录操作后,可能不是很清楚我们的当前的工作路径到底是在哪里了,所以这里写了一个关于打印当前工作目录的函数。

void getpwd()
{
	char buffer[1024] ;
	//获取当前的工作目录,注意:长度必须大于工作目录的长度加一
	char *p = getcwd(buffer , 40);
	char *dir = NULL;

	printf("pwd**buffer:%s   p:%s size:%d  \n" , buffer , p , strlen(buffer));
	//获取当前工作目录的名字
	dir = (char *)get_current_dir_name();
	printf("pwd**dir:%s \n" , dir);

}
在跨目录进行文件操作时候,可以打印当前工作路径,才能有效的进行后续操作,本人当时就是不清楚当前工作路径,所以在传入相对路径时候,总是出错。


接下来就是创建目录了,调用系统API进行目录的创建:

1). int mkdir(const char* name, int mode)

该函数用来创建目录文件夹。参数name:文件夹目录名称, mode:权限,因为linux系统对权限要求比较严格,所以我们一般会有权限参数。这里需要对目录进行检查,如果存在就不用创建,不存在则创建,这里可以用access函数进行检查。

 mode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 
这个函数还可以检查其它文件属性: 
06     检查读写权限 
04     检查读权限 
02     检查写权限 
01     检查执行权限 
00     检查文件的存在性
而这个就算这个文件没有读权限,也可以判断这个文件存在于否。存在返回0,不存在返回-1。下面的是创建代码

if(access(pathName, F_OK ) != 0)
{
	if(mkdir(pathName, 0755) == -1)
	{
		printf("error cp mkdir=%s:msg=%s\n", pathName, strerror(errno));
	}
}

2) rmdir(const char* name)

该函数是删除目录,成功返回0,否则返回-1。删除文件一般用remove(name)。

3)chdir(const char* dir)

该函数在文件目录操作中经常使用,用来切换目录,比如要进入某个文件目录时候或者退出时候都需要调用。

4)DIR*  opendir(const char* path)

该函数主要用来打开指定的目录,如果存在返回DIR的指针,否则返回null。

5)struct dirent* readdir(DIR*)

该函数用来遍历文件夹下面的所有文件(文件夹或者文件),包括系统自动创建的隐藏目录“.”和“..”,成功返回结构体指针,失败返回null。

6) lstat(const char* path, struct stat* buf)

该函数主要是获取指定目录下的文件或者文件夹的信息,例如:名称,大小,时间等等


if((pDir = opendir(FOLDER_PATH)) == NULL)
{
	return 1;
}
//change dir
chdir(FOLDER_PATH);
while((entry = readdir(pDir)) != NULL)
{
	lstat(entry->d_name, &statBuff);

}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值