首页
社区
课程
招聘
[求助]怎么实现文件的实时读写?
发表于: 2006-7-19 16:24 5162

[求助]怎么实现文件的实时读写?

2006-7-19 16:24
5162
我用CreateFile打开一个文件后,先WriteFile写入内容,再用ReadFile读取内容,但无法读取WriteFile写入的内容(在没有CloseHandle(hFile)的情况下操作),请高手指教!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 235
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
WriteFile之后,文件指针已经向后移动了,如果需要读取刚才写入的数据,需要把指针向前移动。。移动的大小是你刚才写入数据的大小

用到的API为SetFilePointer
2006-7-19 18:48
0
雪    币: 241
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
SetFilePointer这个函数我知道,但我现在要的是怎么能在不关闭文件的情况下刷新文件实现?
2006-7-20 12:55
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
4
使用内存映射
写入的过程只需要写到对应的虚拟空间就行了,
然后FlushViewOfFile刷新数据到磁盘文件,
读取的时候只需要读取对应内存空间

可以参考我的
<<基于Windows的二级文件系统开发>>中的system.cpp 中相应的代码
2006-7-20 15:17
0
雪    币: 235
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
没怎么看懂你的意思
2006-7-20 15:34
0
雪    币: 221
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
呵呵, 北极星的意思就是:
   
    hFile = CreateFile(ofn.lpstrFile,GENERIC_READ,FILE_SHARE_READ,
                       NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    hMapFile = CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
    pMapping = MapViewOfFile(hMapFile,FILE_MAP_READ,0,0,0);

   利用pMapping在内存空间中读写, 最后一次写到文件中

而你的方法,和 c 里面的fopen 然后 fprintf 是一样的. 既直接打开读写.
2006-7-20 17:55
0
雪    币: 241
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
那么读和写怎么操作?还是用ReadFile和WriteFile吗?
2006-7-21 16:51
0
游客
登录 | 注册 方可回帖
返回
//