您的位置:首页 > 其它

文件读写操作总结

2010-06-21 13:49 323 查看
一.C-Runtime 函数

1. _tfopen函数。
一般用于客户端,只能独享打开的文件,不能以共享的方式打开。

FILE *fopen(
const char* filename,
const char* mode
);

FILE *_wfopen(
const wchar_t* filename,
const wchar_t* mode
);

说明:
filename:指定文件绝对路径名。
Mode:指定访问文件的类型
l “r” 读文件。如果文件不存在或者不能只找到,返回NULL指针。
l “w” 写文件。如果文件存在,覆盖掉所有的内容。如果不存在,创建之。
l “a” 添加数据。在文件末尾添加新的数据,如果文件不存在,创建之。EOF标记保持原来的位置。用MS-DOS Type命令的话,只能显示原来的数据,新添加的数据将不会显示出来。
l “r+” 打开文件,获得读写权限。文件必须存在。
l “w+” 打开文件,获得读写权限。如果文件存在,内容清空。不存在,创建之。
l “a+” 添加数据。和”a”一样添加数据,区别是”a+”会更新EOF标记的位置。Type命令可以显示去全部的数据。
注:以下标记可以和上面的组合来使用~~
l t 文本模式打开文件。
l b 二进制模式打开文件。
l c 启用委托模式。如果调用fflush,_flushall文件缓存的数据直接写入文件。
l n 重置委托模式,即还原到”no_commit”模式。

2. _fsopen函数
可以设置共享模式,一般用于服务器端。

FILE *_fsopen(

const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
说明:
filename:指定文件绝对路径名。同fopen
Mode:指定访问文件的类型. 同fopen
Shflag:共享模式:
l _SH_COMPAT 设置兼容模式(16位应用程序)
l _SH_DENYNO 可读写
l _SH_DENYRD 不可读,可写。
l _SH_DENYRW 不可读写。
l _SH_DENYWR 不可写,可读。

3. fread 函数
从文件流中读取数据。

size_t fread(
void* buffer,
size_t size,
size_t count,
FILE* stream
);

说明:
Buffer: 存储数据的缓冲区。
Size: 一次读多少个字节。
Count: 读取次数。
Stream: FILE 结构的指针。
注:可以用while语句进行循环读取操作,用feof函数判断是否到了文件结尾,ferror函数判断是读取文件错误。

4. fwrite函数
写入数据到文件流中。

size_t fwrite(
const void* buffer,
size_t size,
size_t count,
FILE* stream
);

说明:
Buffer: 即将写入的数据。
Size: 一次写入多少个字节。
Count: 写入次数。
Stream: FILE 结构的指针。
注:可以用while语句进行循环写入操作。

5.stat函数和fstat函数
Stat获得文件属性,此文件不需要打开,fstat获得一个打开的文件的属性。
int _stat(
const char *path,
struct _stat *buffer
);
说明:
path: 文件路径。
buffer: 获得属性的结构体地址。

二.Win32函数
1. CreateFile函数

HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);

说明:
lpFileName: 指定文件路径。
dwDesireAccess: 指定访问权限。



描述
0
查询文件的属性,并不需要访问这个文件(如果大文件,load进来会很慢)
GENERIC_READ
指定读权限,可以和GENERIC_WRITE组合成读写权限。
GENERIC_WRITE
指定写权限,可以和GENERIC_READ组合成读写权限。
dwShareMode: 指定共享模式。



描述
0
不共享
FILE_SHARE_READ
读共享,可以和FILE_SHARE_WRITE组合成读写共享.
FILE_SHARE_WRITE
写共享,可以和FILE_SHARE_READ组合成读写共享。
lpSecurityAttributes: 安全模式,忽略,设置成NULL
dwCreationDesposition: 行为设置



描述
CREATE_NEW
创建一个新的文件,如果文件已经存在,创建失败。
CREATE_ALWAYS
创建新文件,如果文件存在,覆盖掉老的文件内容和属性。
OPEN_EXISTING
打开一个文件,如果文件不存在,函数返回失败。
OPEN_ALWAYS
如果文件存在,打开此文件,如果文件不存在,创建新的文件。
TRUNCATE_EXISTING
打开一个文件,并将文件内容清空。并且至少指定GENERIC_WRITE 权限。如果文件不存在,函数返回失败。
dwFlagsAndAttributes: 设置文件的属性



描述
FILE_ATTRIBUTE_ARCHIVE
指定文件将被入档,应用程序用来标记成将被备份和或者将移除的
FILE_ATTRIBUTE_COMPRESSED
指定文件或者文件夹为压缩的。
FILE_ATTRIBUTE_HIDDEN
指定文件是隐藏的
FILE_ATTRIBUTE_NORMAL
正常属性
FILE_ATTRIBUTE_READONLY
指定文件是只读的
FILE_ATTRIBUTE_SYSTEM
指定文件是系统文件
FILE_ATTRIBUTE_ROMMODULE
指定文件是DLL文件
FILE_ATTRIBUTE_TEMPORARY
不支持.
hTemplateFile: NULL

2. ReadFile函数
读取文件数据。

BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);

hFile: 文件句柄
lpBuffer: 接受读取数据的缓冲区
nNumberOfBytesRead: 读取的字节数
lpNumberOfBytesRead: 实际读取的字节数
lpOverLapped: NULL;

3. WriteFile 写文件
写入数据到文件中。

BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);

hFile: 文件句柄
lpBuffer: 将写入数据的缓冲区
nNumberOfBytesRead: 写入的字节数
lpNumberOfBytesRead: 实际写入的字节数
lpOverLapped: NULL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: