转自  http://blog.csdn.net/todd911/article/details/8976543

r 打开只读文件,该文件必须存在。

r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容。该文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

关于a 和 a+ 网上有如下的说明:
"a"模式在添加数据前并不清除EOF标志. 添加数据后 用 MS-DOS 的 TYPE 命令只能显示数据到原来EOF 标志而并不会显示后来添加的.
"a+"模式会清除EOF标志, 添加数据后 用 MS-DOS 的 TYPE 命令能显示所有的数据.  "a+" 模式需要以CTRL+Z EOF标志结束流输入.

但是我在linux下试验过,使用a和a+,写入的字符时一样的,没有EOF不一样的问题:
比如原来文件内容为abc,如果使用a模式添加了123,再读取该文件,遇到EOF就停止输出,最后显示abc123,如果按照上面的说法,应该只显示abc。
如果使用a+模式,最后显示也为abc123.
所以以上说法在linux下不成立,可能是在windows下的用法。

最后是在linux中man fopen中的说明:

a      Open  for  appending  (writing  at  end  of file).  The file is created if it does not exist.  The
         stream is positioned at the end of the file.

a+     Open for reading and appending (writing at end of file).  The file  is  created  if  it  does  not
          exist.   The  initial  file  position  for  reading is at the beginning of the file, but output is
          always appended to the end of the file.

上面也没有提到EOF的问题。

最新文章

  1. css权值计算
  2. dp88dp6最靠谱的网络赚钱方法
  3. Java学习-022-Properties 文件数据写入
  4. [译]servlet3.0与non-blocking服务端推送技术
  5. Android底部导航栏创建——ViewPager + RadioGroup
  6. 微信小程序对医疗创业的启示,“餐饮+微信小程序”的猜想
  7. 我是如何拿到蚂蚁金服 offer 的 ?
  8. TestNg和spring3测试报错:Failed to read candidate component class-遁地龙卷风
  9. Android Navigation 架构组件入门教程
  10. Confluence 6 中样式化字体
  11. Codeforces Round #536 (Div. 2)--1106D - Lunar New Year and a Wander
  12. jquery中把一串字符串分割,如:123456789后者abcdefg类型的
  13. FileReader类和FileWriter类的基本用法示例
  14. EHlib在数据单元中显示字段值为图形。
  15. c# axPageLayoutControl 加数据框
  16. class threading.Thread()说明:
  17. HQL的执行过程
  18. 真机调试watch的一系列bug
  19. SVNKit学习——使用低级别的API(ISVNEditor接口)直接操作Repository的目录和文件(五)
  20. Ceph Monitor的数据管理

热门文章

  1. nodejs模块fs——文件操作api
  2. java 任务定时调度(定时器)
  3. 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
  4. C# async 和 await 理解
  5. 一、hystrix如何集成在openfeign中使用
  6. oracle的LAST_DAY()函数
  7. 记一次靠谱的nvm在window系统的安装
  8. Docker Compose编排工具部署lnmp实践及理论(详细)
  9. vue---父调子 $refs (把父组件的数据传给子组件)
  10. 【基础搜索】poj-2676-Sudoku(数独)--求补全九宫格的一种合理方案