记录日期:2014-10-23 20:08
日子背景:前些天在整理“智能相机人数统计”数据的存储问题,由于对fopen打开方式的形式不是很了解,导致读写文件时一直异常,浪费了很多宝贵的时间,为了避免相同的朋友走同样的弯路,同时也警示自己不要犯同样的错误,特此记录,望对有需求的您有所帮助。
我在操作文件时,就是理解错了a/a+的打开文件的原理。导致原本想保存一个指定最大值的文件大小的文件时,出现了,数据写正确,但是读出来的数据错误,文件也一直在增大。后来使用a + r+的方式综合打开文件的:先用a的方式打开,然后立即关闭文件,保证了文件不存在时,会自动建立;然后马上用r+的方式再此打开,保证了数据可以同时被读 和 写,且不要的数据可以结合fseek来覆盖,即达到了,数据文件不会超过指定大小。
具体见下面对Linux手册的对fopen的进一步详解。
fopen():
r :以只读方式打开文件文件,前提是 该文件必须存在------>程序中只可对获取到的文件描述符进行读操作;
r+:以可读可写的文件,前提是 该文件必须实现存在--------->程序中可对获取到的文件描述符进行读 或 写 操作;
w:以只写方式打开文件,如文件已经存在,则会将源文件内容清空,若不存在,则会新建文件------------->在每次打开文件时,文件原来的内容会被删除,程序只可对获取到的文件描述符进行写操作;
w+:以可读可写方式打开文件,如果文件已经存在,则会将源文件内容清空,若不存在,则会新建文件------>在每次打开文件时,文件原来的内容会被删除,程序可对获取到 的文件描述符进行读 和 写操作;
a:以附加方式打开只写文件,如文件存在,则写入的数据会被追加到文件尾,即源文件会被保存下来,若文件不存在,则会新建文件-------->附加的方式:是指不管如何对其文件如何操作,源文件的内容都会被保存下来,即使使用fseek移动写入指针,原数据依然不会被覆盖,新写入的数据会被插入到原始数据之间,即数据会随着写入越来越大。
a+:以附加方式打开可读可写文件,如文件存在,则写入的数据会被追加到文件尾,即源文件被保存下来,若文件不存在,则会新建文件-------->附加的方式:是指不管如何对其 文件如何操作,源文件的内容都会被保存下来,即使使用fseek移动写入指针,原数据依然不会被覆盖,新写入的数据会被插入到原始数据之间,即数据会随着写入越来大。