用C语言来操作文件内容还是有点烦的(尤其是删除内容,或者是修改非等长度的内容),没有现成的API调用,只能自己手动写;
网上查了下资料基本就两个方案:
1、增加个临时文件;把源文件内容逐个字节或者逐行读取出来,然后修改或者丢弃,放到临时文件中,当把源文件中所有内容过滤后,再把临时文件全部覆盖回源文件;
2、读取到内存中修改;把整个文件读取到内存中,然后修改,再覆盖回到源文件;
第1种方案,会多一个临时文件,这样不太安全,使用C语言来做这种事,很大一方面就是考虑到安全性;
第2种方案,读取到内存中,这种方法有个缺陷是你不知道源文件大小,如果源文件很大的话,你要分配很大内存;
我们应该怀疑下,为什么 shell 命令可以很方便的删除、修改文件内容,这绝对不会有临时文件产生,也不会占用多大内存,或者可以说占用的内存不会随着文件的大小而改变?
我想了下,有个新方案,或许就是shell命令的原理;(我没有去研究shell命令的删除实现);
新方案是利用文件指针,如下图: