Linux软件编程(4)—文件IO(2)、目录IO、时间相关函数接口

一、文件IO补充

1.文件IO的读写
(1)write

原型:ssize_t write(int fd, const void *buf, size_t count);
功能:
向文件描述符中写入buf指向的count个字节的数据
参数:
fd:文件描述符
buf:要写入的数据空间首地址
count:要写入的字节数
返回值:
成功返回实际写入的字节数
失败返回-1

(2)read

原型:ssize_t read(int fd, void *buf, size_t count);
功能:
从文件描述符中读取count个字节放入buf指向的空间中
参数:
fd:文件描述符
buf:存放数据空间的首地址
count:想要读取的字节数
返回值:
成功返回实际读到的字节数
读到文件末尾返回0
读取出错返回-1

2.文件描述符偏移量的定位

lseek

原型:off_t lseek(int fd, off_t offset, int whence);
功能:
重新定位流的偏移量
参数:
fd:文件描述符
offset:偏移量
whence:
SEEK_SET
SEEK_CUR
SEEK_END
返回值:
成功返回偏移量
失败返回-1

3. 文件IO与标准IO互相转换的函数
(1)fileno

功能:根据文件流指针获得文件描述符

(2)fdopen

功能:根据已经打开的文件描述符获得文件流指针

(3)feof

功能:判断文件流指针是否到达末尾

(4)ferror

功能:判断文件流指针是否出错

二、目录IO

1.操作方式:打开目录文件,读取目录文件中的目录项,关闭目录文件
2.函数接口:
(1)opendir

原型:DIR *opendir(const char *name);
功能:
打开目录流获得目录流指针
参数:
name:目录文件的路径
返回值:
成功返回目录流指针
失败返回NULL

(2)closedir

原型:int closedir(DIR *dirp);
功能:
关闭目录流指针

(3)readdir

原型:struct dirent *readdir(DIR *dirp);
功能:
读取并返回下一个目录项的信息
参数:
dirp:目录流指针
返回值:
成功返回包含目录项信息结构体指针
失败返回NULL
读到文件末尾返回NULL
struct dirent {
ino_t                    d_ino; /* Inode number:通过inode找到文件对应的磁盘空间位置 */
off_t                     d_off; /* Not an offset; see below */
unsigned short    d_reclen; /* Length of this record */
unsigned char     d_type; /* Type of file; not supported
                                         by all filesystem types:文件类型 */
char                     d_name[256]; /* Null-terminated filename: 文件名*/
};

(4)getcwd

原型:char *getcwd(char *buf, size_t size);
功能:
获得当前工作目录的绝对路径
参数:
buf:存放路径字符串空间首地址
size:最多存放字符串的大小
返回值:
成功返回包含字符串空间的首地址
失败返回NULL

(5) chdir

原型:int chdir(const char *path);
功能:
切换当前的工作路径
参数:
path:要切换的路径
返回值:
成功返回0
失败返回-1

(6)mkdir

原型:int mkdir(const char *pathname, mode_t mode);
功能:
创建目录文件

注意:

r:读权限,决定用户是否能够查看目录下所有文件名

w:写权限,决定用户是否能够在目录下新建文件

x:执行权限,决定用户是否能够进入目录

(7)rmdir

原型:int rmdir(const char *pathname);
功能:
删除目录文件

3.文件名和路径

file.txt:文件名

./file.txt:路径

三、时间相关函数接口

1.分类
(1)time_t 类型时间

1970-1-1到现在的秒数

一般用于时间计算相关逻辑

(2) struct tm 类型时间

包含年月日时分秒信息

(3) char *字符串类型时间

由时间拼接的字符串

2.函数接口
(1)time

原型:time_t time(time_t *tloc);
功能:
返回1970-1-1日到现在的秒数
参数:
存放秒数空间的首地址
返回值:
成功返回秒数
失败返回-1

(2)localtime

原型:struct tm *localtime(const time_t *timep);
功能:
将秒数转换为结构体时间
参数:
timep:1970-1-1到现在的秒数
返回值:
成功返回包含时间的结构体指针
失败返回NULL
struct tm {
int tm_sec;    /* Seconds (0-60) */
int tm_min;    /* Minutes (0-59) */
int tm_hour;   /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon;   /* Month (0-11) */
int tm_year;   /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday;  /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst;  /* Daylight saving time */
};

(3)mktime

原型:time_t mktime(struct tm *tm);
功能:
将结构体时间转换为time_t类型的时间
参数:
tm:结构体时间的首地址
返回值:
成功返回time_t时间
失败返回-1

(4)ctime

原型:char *ctime(const time_t *timep);
功能:
将time_t时间转换为字符串时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值