打开文件写入内容怎样才能不覆盖以前的内容?
我想用CFile的Open函数打开一个文件,如果文件不存在则创建之并写入内容,如果文件已存在则接在原有内容后面写入内容。请问Open函数的打开方式应该怎么设置?
我试了一下,发现好像只要用了modeCreate就会覆盖原有的内容。
问题点数:20、回复次数:8Top
1 楼dyugao(晕头转向)回复于 2002-05-16 21:19:34 得分 0
呵呵~
先看看那个文件在不在(当然实用程序看了)
然后决定用不用modeCreate就好了啊。Top
2 楼homor(我)回复于 2002-05-16 21:59:18 得分 0
这个方法是可以,不过我那个打开文件的程序要多次调用,每次都先检查文件是否存在是不是时间花销大了点。我觉得用合适的打开方式应该可以做到的吧。哪位大侠指教一下。Top
3 楼yes_start(刚刚开始)回复于 2002-05-16 22:24:23 得分 0
if exist
modeWrite
else
modeWrite|modeCreate
if open many times ,perhaps you can use a global variable(?), but you also need test if can write successful
ok!?
Top
4 楼homor(我)回复于 2002-05-16 22:33:23 得分 0
我同时使用modeCreate和modeNoTruncate参数,结果虽然并没有把原有文件的内容截为空,却是在原文件的开头写新数据的,能不能接在原来数据的后面写新的数据呀?Top
5 楼cadinfo(无语清风)回复于 2002-05-16 22:45:24 得分 5
那么使用追加模式呢?
代码1.(纯C)
FILE *fp;
if((fp=fopen("",""))==NULL)
{
printf("can't append/or create file\n");
return;
}
else
{
.....
}
代码2.C++,MFC
TRY
{
CFile file( "strPathName", CFile::modeCreate|CFile::modeNoTruncate );
}
CATCH(CFileException, pEx)
{
pEx->ReportError();
}
END_CATCH
MSDN 是最好的老师!
Top
6 楼cadinfo(无语清风)回复于 2002-05-16 22:47:38 得分 5
刚才纯C里面,打开模式"a",意思为appending 即追加。Top
7 楼zdhe(zdhe)回复于 2002-05-16 23:30:07 得分 10
what you use:
c runtime : fopen (.., "a")
for sdk: CreateFile use OPEN_ALWAYS and SetFilePoiner(Ex) use FILE_END shift 0.
other method in MFC
CFile: if exist after success open, call CFile::SeekToEnd
....
Top
8 楼homor(我)回复于 2002-05-17 15:05:37 得分 0
hehe,非常感谢zdhe,用SeekToEnd是个好主意。Top




