文件编程
1、 两种方式:Linux系统调用方式;C语言库函数方式;
Linux系统调用方式文件访问部分
2、 int create(const char* filename,mode_t mode);
filename:要创建的文件名,包含路径,缺省为当前目录路径;
mode:创建模式
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IRWXU 可读、可写、可执行
3、 int open(const char* pathname, intflags);
intopen(const char* pathname, int flags, mode_t mode);
pathname:要打开的文件名,包含路径,默认为当前目录路径;
flags:打开标志
O_RDONLY 只读方式打开
O_WRONLY 只写方式打开
O_RDWR 读写方式打开
O_APPEND 追加方式打开
O_CREAT 创建一个文件
O_NOBLOCK 非阻塞方式打开
如果使用了O_CREAT标志,则使用的函数是int open(const char* pathname,int flags, mode_t mode),这时需要指定mode来表示文件的访问权限。
4、 int close(int fd);
5、 int read(int fd, const void* buf,size_t length);
从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数;
6、 int write(int fd, const void* buf,size_t length);
把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数;
7、 int lseek(int fd, offset_t offset,int whence);
将文件读写指针相对whence移动offset个字节,操作成功时,返回文件指针相对与文件头的位置;
whence的可取值:
SEEK_SET 相对文件开头
SEEK_CUR 相对文件读写指针的当前位置
SEEK_END 相对文件末尾
offset可取负值,表示向前移动;
lseek(fd,0, SEEK_END)的返回值就是文件的长度;
8、 int access(const char* pathname,int mode);
判断文件是否可以进行某种操作,如读写等;
pathname:文件名称,包含路径,默认路径为当前目录路径;
mode:要判断的权限,可以取如下值,或者它们的组合:
R_OK 文件可读
W_OK 文件可写
X_OK 文件可执行
F_OK 文件存在
测试成功,函数返回0;一个条件不符时,返回-1;
C库函数方式文件访问部分---独立于具体的操作系统平台
9、 FILE* fopen(const char* filename,const char* mode);
10、 在DOS、Windows系统中,区分二进制文件和文本文件;在Linux系统中,不区分二进制文件和文本文件;
11、 size_t fread(void *ptr, size_tsize, size_t n, FILE* stream);
12、 size_t fwrite(const void* ptr,size_t size, size_t n, FILE* stream);
13、 int fgetc(FILE* stream);
从指定的文件中读取一个字符;
14、 int fputc(int c, FILE* stream);
向指定的文件中写入一个字符;
15、 void fscanf(FILE* stream, char*format[, argument…]);
从一个流中进行格式化输入;
16、 int fprintf(FILE* stream, char*format[, argument…]);
格式化输出到一个流中;
17、 int fseek(FILE* stream, longoffset, int whence);
18、 char *getcwd(char *buffer, size_tsize);
获取当前路径,提供一个size大小的buffer,getcwd会把当前的路径名复制到buffer中,如果buffer太小,函数会返回-1;
19、 int mkdir(char* dir, int mode);
创建一个新目录;
#include<sys/stat.h>
0表示创建成功,-1表示创建出错;
后续待补充...