文件IO

1、系统调用:用户空间进程访问内核的接口;把用户从底层的硬件编程中解放出来;极大的提高了系统的安全性;使用户程序具有可移植性;是操作系统的一部分。
2、在Linux中,我们可以通过open系统调用打开一个文件,可以获得一个文件描述符(fd),这个fd表示打开的文件,我们可以read系统调用来读文件,可以通过write系统调用来写文件,通过close系统调用关闭文件
文件相关系统调用函数
1、打开文件
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
功能:打开一个文件(可以打开设备文件)
参数:
@pathname:打开文件的路径名
@flags: O_RDONLY:只读方式打开文件。
O_WRONLY:可写方式打开文件。
O_RDWR:读写方式打开文件。
以上三个参数互斥
O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三的参数为其设置权限。
O_EXCL:如果使用O_CREAT时文件存在,则可返回错误消息。这一参数可测试文件是否存在。
O_TRUNC:如文件已经存在,那么打开文件时先删除文件中原有数据。
O_APPEND:以添加方式打开文件,所以对文件的写操作都在文件的末尾进行。
注意:
(1)这些标示可以用"|"运算符连接在一起使用
(2)如果使用了O_CREAT参数,需要指定创建文件的权限
@mode 用来指定文件创建时的权限,八进制数表示,如:0666
注意:新建文件的实际权限 mode & ~umask
返回值:成功返回文件描述符,失败返回-1
例如:open("/home/linux/hello.c",O_CREATE|RDWR,0666);

程序运行的时候,操作系统默认打开了标准输入,标准输出,标准出错
标准输入:0
标准输出:1
标准出错:2
文件描述符分配原则:最小未使用
2、写文件
ssize_t write(int fd, const void *buf, size_t count);
功能:向一个文件描述符中写入数据
参数:@fd:文件描述符
@buf:写入数据的首地址
@count:希望写入数据的数量
返回值:成功返回实际写入的数量,失败返回-1。
3、读文件
ssize_t read(int fd, void *buf, size_t count);
功能:从一个文件描述符中读取数据
参数:@fd:文件描述符
@buf:读取数据存放的地址
@count:希望读多少个
返回值:成功返回实际读到的数量,失败返回-1;
4、文件定位
off_t lseek(int fd, off_t offset, int whence);
功能:设置文件读写位置指针
参数:@fd:文件描述符
@offset:偏移量
@whence:偏移的基准
SEEK_SET:以文件开头为基准
SEEK_CUR:以文件当前的位置为基准
SEEK_END:以文件末尾为基准
返回值:返回偏移后的文件读写指针位置,失败返回-1;
lseek注意事项:
(1)每个打开的文件都有一个与其相关的“当前文件位移量”,它是一个非负整数,用以度量从文件开始处(也就是从0处)计算的字节数。
(2)通常,读/写操作都从当前文件位移量处开始,在读/写调用成功后,使位移量增加所读或者所写的字节数。
(3)lseek()调用成功返回新的文件位移量,失败返回-1,并设置errno。
(4)lseek()只对常规文件有效,对socket、管道、FIFO等进行lseek()操作失败。
(5)lseek()仅将当前文件的位移量记录在内核中,它并不引起任何I/O操作。
(6)文件位移量可以大于文件的当前长度,在这种情况下,对该文件的写操作会延长文件,并形成空洞(注意:是文件位移量大于文件的长度,并对该文件写操作,不然是不会形成空洞的,带有空洞的文件也叫稀疏文件),空洞并不占用物理空间,所以这暗示着文件系统上的所有文件加起来的空间大小可以超过实际物理磁盘的大小。
4、获取文件属性函数
int stat(const char *path, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);
三个函数的返回:若成功则为0,若出错则为-1,并且设置errno.
给定一个pathname的情况下:
stat函数返回一个与此命名文件有关的信息结构,当命名的文件是一个符号连接时,返回的是目标文件的文件信息
fstat函数获得已在描述符filedes上打开的文件的有关信息
lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值