首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

文件处理方式有哪些?其间有什么区别

2012-09-25 
文件处理方式有哪些?之间有什么区别?我知道在windows系统下,文件处理有:1.C++的文件流(fstream);2.C的fope

文件处理方式有哪些?之间有什么区别?
我知道在windows系统下,文件处理有:

1.C++的文件流(fstream);

2.C的fopen()/fwrite()/fread()/fclose();

3.win32的api,CreateFile()/ReadFile()...;

4.win32下的文件映射,CreateFileMapping()/MapViewOfFile();

5.其他,貌似还有直接写物理扇区等手段;

====================

我想问的是,

  (1) 大神们还知道有那些文件处理方式?

  (2) 各个方式之间的差别/ 优缺点/ 适用场景是什么----what? 以及导致这些差异的本质原理----why?

期待牛人全面解答!!!欢迎大家积极讨论!!!


[解决办法]
直接IO是最快的 其次API
最方便的是文件流

C函数库函数建议用API直接代替
[解决办法]
简单来说,fstream/fopen()/fwrite()/fread()/fclose()是C/C++通用的,非常容易移植,而其它函数都是和Windows系统绑定的,非常局限再怎么优化都无法跨平台。
[解决办法]
我写的那一堆怎么 没有显示啊?

增加一种文件读写方式: 内核的文件读写api

1. 流, 就是一串数据, 用户只关心流的入口和出口, 然后可以随意嵌套操作, 并不是只有文件可以做成流, 网络,内存,硬盘中的数据等等都可以 做成 流数据。 加密解密也可以做成流。 拿java的流来讲, 可以做这样一个过程: 文件流=》加密流=》网络流》internet=》网络流=》解密流=》文件流=》字符流。 这是一个相当复杂的过程, 但是经过封装后, 只需要 后一个流的入口 是前一个流的出口 就可以了。
2. fopen等, 最基本的c读写文件方式, 特点就是快,准,狠, 但是要做复杂逻辑操作就只能靠用户了。
3. CreateFile() windows api接口函数, 上述两种标准库函数的底层实现都是这个函数。 如果只做windows开发就直接用它好了。。 而且它可以读写串口,读写驱动,。。反正 串口、驱动 可以看做是文件。
4.CreateFileMapping() windows api接口函数, 用于两个进程的数据交换。。可以直接开辟共享缓冲区,供两个进程使用。 如果某天 qq想和 360 聊天了, 可以用这个函数。
5. 扇区读写, 数据恢复专用, 用上面的东东 无法读出已删除的数据, 但是通过读写扇区方式可以组织出来 某些已删除的数据。。 而且 这种方式在windows下面 也是通过CreateFile来实现的, 不过不是度文件, 而是读 第0个/device0
[解决办法]
抽象层次不同。 越抽象(比如c++的流)执行效率一般会越差,程序的可维护性越好。最终都要通过磁盘驱动读写。

热点排行