day26- 系统编程之 文件IO(II) 及 文件属性
一、文件IO函数(续)
1.1 lseek函数:(与fseek用法相似)
off_t lseek(int fd, off_t offset, int whence);
功能:
定位光标的位置
参数:
fd:文件描述符
offset:偏移量
1.2 fileno函数
int fileno(FILE *stream);
功能:
获得一个文件流指针中的文件描述符
参数:
stream:文件流指针
返回值:
成功返回文件描述符
失败返回-1
1.3 fdopen函数
FILE *fdopen(int fd, const char *mode);
- 功能:
将文件描述符转化为文件流指针
- 参数:
fd:已经打开的文件描述符
mode:
"r"
"r+"
"w"
"w+"
"a"
"a+"
- 返回值:
成功返回文件流指针
失败返回NULL
1.4 perror函数(系统级别报错函数)
void perror(const char *s);标识性信息,写对应的函数,如fopen main.c;10
作用是将上一个函数发生错误的原因输出到标准错误输出(stderr)
适用于man2、man3的函数使用,第三方库就不行;
1.5 文件权限
fopen | open |
w | O_WRONLY|O_CREAT|O_TRUNC |
w+ | O_RDWR|O_CREAT|O_TRUNC |
r | O_RDONLY |
r+ | O_RDWR |
a | O_WRONLY|O_CREAT|O_APPEND |
a+ | O_RDWR|O_CREAT|O_APPEND |
二、 目录(只读)
.和..为隐藏目录,任何目录下都存在.和..
2.1 操作步骤
1,打开目标目录 opendir
2.读取目录 readdir
3.关闭目录 closedir目录 当文件看,只不过操作函数和操作文件函数不一样
DIR表示目录流指针
direntry表示一次取整体目录的一条
2.2 相关函数
2.2.1 opendir函数
DIR *opendir(const char *name);
返回值:成功,返回目录流指针;否则,返NULL;
2.2.2 readdir函数
struct dirent *readdir(DIR *Dirp);
struct dirent的结构体:
其中,我们可能使用:
char d_name[256]; //文件名
unsigned char d_type; //文件类型
文件类型:
块设备,存储类,硬盘、光盘等 字符设备,如鼠标、键盘等 目录 管道 符号链接也称软连接,与windows的桌面快捷方式类似 普通文件 网络文件 不认识
2.2.3 closedir函数
int closedir(DIR *dirp);
2.3 时间函数
2.3.1 time函数//秒数
time_t time(time_t *tloc);
若传入NULL,返回秒数
2.3.2 localtime函数//日期
struct tm *localtime(const time_t *timep);
三、总结