打开文件fopen
1 2
| #include FILE *fopen(char *filename,char *type);
|
type为[B][C]
组合字符串.
A:
1 2 3
| * r: 读, 指针设0, 不改变文件长度; * w: 写, 文件不存在时文件被创建, 文件存在时文件长度设为0, 指针设为0; * a: 追加写, 指针设为文件尾
|
B:
1 2
| * b: 二进制方式打开 * t: 文本方式打开
|
C:
1
| * +: 可以同时input/output, 使用时必须注意用fflush或者fseek来防止内置buffer没消耗干净
|
读文件fread/写文件fwrite
1 2 3 4
| #include size_t fread(void *ptr, size_t size, size_t nmembFILE *stream ); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
fwrite()
的语义是写入nmemb
个size
大小的对象, 返回值为写入对象的数量(而不是总共的字节数).
空间预分配posix_fallocate
1 2
| #include int posix_fallocate(int __fd, off_t __offset, off_t __len);
|
据说还有个linux版本的 http://man7.org/linux/man-pages/man2/fallocate.2.html:
1 2 3
| #define _GNU_SOURCE #include int fallocate(int fd, int mode, off_t offset, off_t len);
|
改变文件大小ftruncate
将文件大小改变为参数length指定的大小,如果原来的文件大小比参数length大,则超过的部分会被删除,如果原来的文件大小比参数length小,则文件将被扩展.
1 2
| #include int ftruncate (int __fd, __off_t __length);
|
注意这个操作不会改变当前指针, 比如缩小文件为0时, 并不会将指针置0.