void CFileTestView::OnWriteFile() 
{
CFile FileTest;
FileTest.Open("TEST.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
FileTest.Write("this is a test\r\n",sizeof("this is a test\r\n")+1);
FileTest.Close();
}为什么我多次点击我的这段代码所对应的按钮,不能在TEST.txt文件中产:
this is a test
this is a test
this is a test
这样的我想要得到的,接着写文件的功能,它永远都只写了一个  this is a test  ,为什么在模式中或了CFile::modeNoTruncate还是不行??????还有就是我发现用CFile的open打开的文件好像默认的都是二进制模式,(是因为我发现写的“\n”换行符号不行,还必须要用\r\n)请大家帮我指点指点!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    FileTest.SeekToEnd(); 
    FileTest.Write("this is a test\r\n",sizeof("this is a test\r\n")+1);
      

  2.   

    另外,写纯文本文件最好用CFile的子类:CStdioFile,特别是一行一行地写文本时,很方便。
      

  3.   

    楼上的做法应该是把文件的Positions the current file移动倒了文件的末尾,这样写出来的文件,不是新写入的数据都在文件的最下面了吗???怎样才能实现把新写入的内容写入到文件的最上方,旧的数据朝下面顺移
      

  4.   

    有很多软件,比如说瑞星卡卡,就有一个软件升级后的日志文件,就是把新的操作写在了文件的最上面,难道他们的做法都是先把文件读出到一个buf中然后再用新的字符串加上buf然后再次的写入到文件中?????????????????????
    还有就是为什么不能用\n换行,而非要用\r\n,,它们两个到底有好大的区别????
      

  5.   

    难道不是?难道有这么高效的他们不用,去自己变态地绕过磁盘驱动?
    但问题是,他们也可以一次性组织好数据然后一次性全部按序写出。\r\n和\n的关系是微软从DOS开始就设计的变态的东西,也只有顺着它了。Unix上没有这种无趣的机制。
    另外,使用CStdioFile可以在读出/写入时实现\r\n与\n之间的自动转换。
      

  6.   

    晨星大哥让我加你的QQ吧,以后有什么还可以问问你??先非常的谢谢你,,,告诉个我你的QQ吧,我的是37146592