关于文件读写操作
最近做了个程序设计到文件读写,有些地方不明,希望共同探讨
文件操作基本用的是C函数 fopen, fread,fwrite fprintf
一, 如果想在已有文件中插入新内容,不覆盖原有内容,怎么实现比较好?
我目前做的是 开辟一buffer,将整个文件读入buffer,然后分析文buffer中的文件内容,定位,插入 ,把新数据写入到文件。 如果不读入整个文件,只通过文件指针定位,可以实现么? 还有别的好方法么?
二。 对于要修改的文件,怎么能不影响原有的文件编码方式,比入 ANSI UTF-8 ,等等。
我目前是用二进制方式读写的。 fopen(fp,"rb) ,fopen(fp,"wb");要写入的数据在CString。可以包含汉子。我通过WideCharToMultiByte转换成char * ,因为我用的是vs2005工程,支持unicode,用fwrite写的时候buffer 定的是char* 类型,所以要做下转换,转换后,可以正常写入到文件,没发现错误。 出了我这种处理有没有更好的方式,我这么处理,有什么潜在的问题么?
一些文本工具都支持多种编码,比如editplus,秀丸 。。 这些工具在文件处理上有什么特别么。另外在实做的过程中,我遇到这样的一个问题,我用_wfopen 支持UNICODE的 C函数处理文件 ,要修改的文件编码假定是ANSI ,我用fread 将文件读入到TCHAR* buffer 中。 然后我用wcsstr 查找关键字L"我要找到你"。
TCHAR * pstr = wcsstr ( buuffer,L"我要找到你"); 但这时候什么也查不到。 明明文件中存有关键字,但检索不到。 而用fread 将文件读入到 char* buffer中,用strstr查找,就可以查到。这是不是文件编码导致的呢?
有什么好的方法解决么?
好了就想到这些了。。以后想到在补充。
[解决办法]
一, 将结果输出到其他的文件中, remove原来的文件, rename新文件。
二, 文件没有什么格式, 你自己往里放什么样的字节就是什么样子, 你写一个字节的'a'就是ascii的'a',你写2字节的"a"就是Unicode的, 自己来做.
[解决办法]
关于文件读写操作解决办法
关于文件读写操作最近做了个程序设计到文件读写,有些地方不明,希望共同探讨文件操作基本用的是C函数 fopen
