二、文件夹的操作
1、linux下文件夹也是文件的一种
获取一个文件夹的信息:
drwxrwxr-x 2 tarena tarena 4096 8月 9 1456 dir
2、什么是文件夹的内容:
文件夹的内容是文件夹里的文件或文件夹
r读w写x通过(如果没有通过权限的话,通过cd命令无法进入该目录)
3、使用程序来访问文件夹的内容:
opendir(3)
#include systypes.h
#include dirent.h
DIR opendir(const char name);
功能:打开一个文件夹
参数:
name:指定了要打开的文件夹的名字
返回值:返回一个指针,指针指向文件夹流
NULL 错误 errno被设置
closedir(3)
#include systypes.h
#include dirent.h
int closedir(DIR dirp);
功能:关闭文件夹
参数:
dirp:opendir(3)的返回值
返回值:0 成功
-1 错误 errno被设置
readdir(3)
#include dirent.h
struct dirent readdir(DIR dirp);
功能:从一个文件夹读取数据
参数:
dirp:opendir(3)的返回值
返回值:返回一个地址,如果到达了文件的末尾NULL返回errno不变,如果发生一个错误,NULL返回,errno被设置
可以读取以下的信息:
struct dirent {
ino_t d_ino; inode number inode号
off_t d_off; offset to the next dirent 下一个索引偏移量???
unsigned short d_reclen; length of this record 本记录长度???
unsigned char d_type; type of file; not supported 文件类型
by all file system types 不是所有系统都支持
char d_name[256]; filename 文件名
};
举例:实现浏览指定文件夹下的内容:(dir_op.c)
程序:
#include stdio.h
#include systypes.h
#include dirent.h
int main(int argc, char argv[]) {
struct dirent dir;
打开文件夹
DIR p = opendir(argv[1]);
if(p == NULL) {
perror(opendir);
return -1;
}
读取文件夹的内容
while((dir = readdir(p)) != NULL) {
printf(file%stinode number%ldn, dir-d_name, dir-d_ino);
}
关闭文件夹
closedir(p);
return 0;
}
显示一个有文件的文件夹内容:
命令: tarena@ubuntu~dayday29$ a.out ..day29
结果: filesh inode number1055689
filehello inode number1055687
filepstat.c inode number1055695
file.. inode number662316
fileh inode number1055687
filea.out inode number1055674
filedir_op.c inode number1055663
fileh~ inode number1055690
filepstat.i inode number1055679
file. inode number1055628
filedir inode number1055677
显示一个空文件夹内容:
命令: tarena@ubuntu~dayday29$ a.out dir
结果: file.. inode number1055628
file. inode number1055677
【C语言】【unix c】文件夹的操作
最新推荐文章于 2022-10-12 18:55:22 发布