Apache源码分析——APR(4)文件操作(2)

在文件操作(1)中看到了apr对文件路径的处理,现在来看看看文件操作。

文件操作就那么几种:打开、关闭、写入、读取、复制、删除、重命名等。下面就看看apr是怎么做这些操作的。

 

首先看打开操作apr_file_open函数,apr_file_open先是把apr中定义的访问权限和文件属性都转换成相应的windows系统下的访问权限和文件属性值,最后调用了windows Api 函数CreateFile,而后就是构造出一个apr_file_t返回。

起重要作用的还是CreateFile这个API,CreateFile有内核版本和用户版本的,熟悉Windows编程的我们知道,CreateFile并不仅仅只能够创建文件,还能够创建其他的IO操作对象,具体可查Windows API,这里不多做解释。

 

【关闭操作】

apr_file_close来负责关闭文件,里面是调用了file_cleanup函数来关闭了文件句柄的,file_cleanup在上篇中已经分析过了的。

 

【删除操作】

apr_file_remove函数负责删除文件,其实质上是调用了Windows API函数DeleteFile。

 

【重命名】

apr_file_rename来完成文件的重命名,其调用了MoveFileEx来实现文件的重命名,其实就是移动文件。在Windows下 如果在同一个驱动器下移动文件,其实是只修改了文件的索引的,这一点,你懂的。。。。

 

【复制】

apr_file_copy负责文件的copy工作,就是对文件的复合操作打开-》读取-》关闭-》打开-》写入-》关闭。

 

【读取】

apr_file_read负责文件读取工作,我本来是猜测这个文件读取,用ReadFile就搞定了,结果看了下源码,并不是那么简单呐,里面原来还处理文件可重叠IO操作,而且还兼容了下命名管道了,甚是复杂撒,可将文件读取和写入单独分析下了。

 

【写入】

apr_file_write负责文件写入工作,此函数也小有复杂,不过最后还是调用了WriteFile来写入的。

 

srclib\apr\include\apr_file_io.h中还定义了许多文件操作函数,基本都是比较简单的操作,容易读滴很,我在项目中就常用这里代码来方便的自己的工作,像目录创建函数,我就从这apr中copy代码后,秀秀改改就用到自己项目中了,就一个字“爽”撒。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值