windows下文件打开和缓存问题。

namewchwch 2010-09-19 04:27:56
经过

createfile()
readfile()
closehandle()

后,文件是立即被写进了硬盘吗? 还是回在缓冲里停留,以便下一次打开?
...全文
456 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sycode1983 2010-09-26
  • 打赏
  • 举报
回复
缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。
1、全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。
2、行缓冲
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。
3、不带缓冲
也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。
缓冲区的刷新
下列情况会引发缓冲区的刷新:
1、缓冲区满时;
2、执行flush语句;
3、执行endl语句;
4、关闭文件。
缓冲区满或关闭文件时都会刷新缓冲区,进行真正的I/O操作。
sycode1983 2010-09-26
  • 打赏
  • 举报
回复
lz上机测试下,会明白的
Eleven 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zjz800800 的回复:]
createfile()
readfile()
writefile()
closehandle()

文件操作时,你为什么要管瞬间的过程,你需要知道的就是打开,写,读,关闭的阶段。

#include <stdio>
#include <string>
using namespace std;

void main()
{
FILE *fp = fopen("c:\tes……
[/Quote]
FILE *fp = fopen("c:\test.txt","wb");
-->
FILE *fp = fopen("c:\\test.txt","wb");
zjz800800 2010-09-21
  • 打赏
  • 举报
回复
createfile()
readfile()
writefile()
closehandle()

文件操作时,你为什么要管瞬间的过程,你需要知道的就是打开,写,读,关闭的阶段。

#include <stdio>
#include <string>
using namespace std;

void main()
{
FILE *fp = fopen("c:\test.txt","wb");
char buf[10];
fwrite(buf,buf_length,1,fp);
fread(buf,buf_length,1,fp);
fclose(fp);
}

随手写的,未测试。
c++讨论群53271408
sycode1983 2010-09-21
  • 打赏
  • 举报
回复
C和C++文件操作系统是带缓冲的
API文件操作系统是不带缓冲的
lz可以上机测试
namewchwch 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ggw007 的回复:]
FlushFileBuffers()

Clears the buffers for the specified file and causes all buffered data to be written to the file.
[/Quote]


是这样说,但是不知道是否真的全部写回到硬盘。
tubo_true 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ggw007 的回复:]

FlushFileBuffers()

Clears the buffers for the specified file and causes all buffered data to be written to the file.
[/Quote]
up
ggw007 2010-09-19
  • 打赏
  • 举报
回复
FlushFileBuffers()

Clears the buffers for the specified file and causes all buffered data to be written to the file.
Eleven 2010-09-19
  • 打赏
  • 举报
回复
你这哪有写文件调用的函数吗?你ReadFile是读文件
NIKE霸天虎 2010-09-19
  • 打赏
  • 举报
回复
立刻写入
jogger007 2010-09-19
  • 打赏
  • 举报
回复
closehandle之后立即写入

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧