none
一个现实中的问题 RRS feed

  • 问题

  • createfile打开文件后,writefile写一百条数据进文本。但是写到中间的时候,还没closefile断电了。这个时候,文件是否可能丢失,丢失的几率大不大。
    2011年10月27日 1:12

答案

  • 可考虑:

    1 在目标文件同盘下某个目录创建临时文件

    2 对临时文件操作

    3 待确认文件已经完成写入后,将目标文件删除并把临时文件重命名为目标文件

    这样可以避免丢失问题.至少保证其数据完整性

    2011年11月1日 6:24

全部回复

  • 你为什么会认为文件会丢失呢?你写入之前自己删掉了原有文件吗?

    防断电的话应该用CreateFileTransacted。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年10月27日 18:44
    版主
  • 你好,

     

    当你在调用createfile函数成功之后,文件就已经生成在您物理硬盘中。所以即使突然断电这个文件也不会突然消失。

     

    此外,如果在断电时候您正在使用流进行读写操作,那输入输出流中的数据会丢失。

     


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月28日 7:38
  • 可考虑:

    1 在目标文件同盘下某个目录创建临时文件

    2 对临时文件操作

    3 待确认文件已经完成写入后,将目标文件删除并把临时文件重命名为目标文件

    这样可以避免丢失问题.至少保证其数据完整性

    2011年11月1日 6:24
  • 不是进内存里面了?
    2011年11月2日 15:17