读书人

忽然断电VB保存过的txt文件为空

发布时间: 2013-01-01 14:04:18 作者: rapoo

突然断电VB保存过的txt文件为空
在VB代码
Open "E:\BraidWorkRecord.txt" For Output As #9
Print #9, num
Close #9

大概每隔500ms会写一次,可以突然断电以后txt的内容就为空了。请问Close以后不是就可以把内存内容写入文件的吗?
然后我使用如下
Open "E:\BraidWorkRecord.txt" For append As #9
Print #9, num
Close #9
断电以后查看内容:如果在我断电之前看到的是num=10,断电以后查看文件是12345678 ,后面就空了
请问如何才能有效快递保存到文件中
[解决办法]
直接用 API CreateFile 来创建、读写文件

里面有个参数可以设置不能延迟写文件,意思就是说 WriteFile 后内容立刻写到文件里头
[解决办法]
实际上,写磁盘比你想象的过程更复杂。断电时很可能将磁盘任务队列中所有任务丢失。

这样做应该可以:

写文件时,先写入一个临时文件。

完成后,删除备份文件;将当前文件改名为备份文件。(注意,都不涉及文件写。)

最后,将临时文件改名为当前文件。

其实,最主要的问题是,PC 代码远比磁盘操作跑得快。你向磁盘驱动器丢过去几个命令,一掉电,都没了。

最根本的途径,用 API 读写文件。也可用 VC++ 写一个 DLL 来调用。其中的 CreateFile 采用非缓存方式,FILE_FLAG_NO_BUFFERING,直接对磁盘文件访问。写后,再读,确认后再进行下一步。

读书人网 >VB

热点推荐