文件操作(创建,打开,读取,关闭等)

来源:互联网 发布:东莞天行健网络怎么样 编辑:程序博客网 时间:2024/06/10 08:59

*****不使用库函数

创建文件

int creat(char *filename,mode_t mode);
所有打开的文件都对应一个文件描述符,这个描述符在现代的系统里已经达到了1024;
int open(const char*filename,int flags,mode_t mode);
flags 是打开的标志,包括只读的标志,O_CREAT,没有文件将会创建文件,这个时候,mode_t这个参数不能省略,必须指定创建文件的属性。
int read(int fd,const void *buf,size_t length)
返回的是实际读到的字节数
int write(int fd,const void *buf,size_t length)
返回值是实际写入到fd所指向文件的字节数
int lseek(int fd,offset_t,int whence),表示的是移动后文件指针相对于文件头的位置,移动到文件尾即是文件的长度。
打开文件之后,指针会指向文件的开头,当读了三个字节,指针也会移动到第三个字节,这时候再开始写,会从第四个字节开始读。read和write时这个指针会自动移动,也可以人工进行移动,即lseek。
第三个参数表示从什么地方开始移动这个指针,offset表示从这个基准移动多少个字节。向前移动是负值向后移动是正值。
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件结尾
判断文件是否可以进行某种操作(读、写或执行)
int access(const char*pathname,int mode);
mode 的取值:R_OK、W_OK、X_OK,F_OK.
等于0,表示测试成功。
不等于0,表示测试不成功。

创建文件
int creat(char *filename,mode_t mode);
所有打开的文件都对应一个文件描述符,这个描述符在现代的系统里已经达到了1024;
int open(const char*filename,int flags,mode_t mode);
flags 是打开的标志,包括只读的标志,O_CREAT,没有文件将会创建文件,这个时候,mode_t这个参数不能省略,必须指定创建文件的属性。
int read(int fd,const void *buf,size_t length)
返回的是实际读到的字节数
int write(int fd,const void *buf,size_t length)
返回值是实际写入到fd所指向文件的字节数
int lseek(int fd,offset_t,int whence),表示的是移动后文件指针相对于文件头的位置,移动到文件尾即是文件的长度。
打开文件之后,指针会指向文件的开头,当读了三个字节,指针也会移动到第三个字节,这时候再开始写,会从第四个字节开始读。read和write时这个指针会自动移动,也可以人工进行移动,即lseek。
第三个参数表示从什么地方开始移动这个指针,offset表示从这个基准移动多少个字节。向前移动是负值向后移动是正值。
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件结尾
判断文件是否可以进行某种操作(读、写或执行)
int access(const char*pathname,int mode);
mode 的取值:R_OK、W_OK、X_OK,F_OK.
等于0,表示测试成功。
不等于0,表示测试不成功。
*****使用库函数(可移植性变好)

FILE *fopen(const char *filename,mode_t mode);
常见打开模式r,rb,w,wb,但在Linux中不区分二进制文件和文本文件。
size_t fread(void *ptr,size_t size,szie_t n,FILE *stream);
size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream);
从缓冲区ptr所指的数组中把n个字段写到stream指向的文件中,每个字段长为size个字节,返回实际写入的字节数。
int fgetc(FILE *fp);从指定文件中读取一个字符。
int fputc(int c ,FILE *stream);向指定文件中写入一个字符。
fscanf(FILE *stream,char *format[,arguement..]);从一个流中进行格式化输入。
int fprintf(FILE *stream,char*format[,arguement..]);格式化输出到一个流中。
int fseek(FILE *stream,long offset,int whence);
whence
SEEK_SET;从文件的开始出开始搜索
SEEK_CUR:从当前位置开始搜索
SEEK_END;从文件的结束出开始搜索
char *getcwd(char *buffer,size_t size)
提供一个size大小的buffer,getcwd会把当前的路径名cp到buffer中,如果buffer太小,会返回-1。
创建目录:
int mkdir(char *dir,int mode);  #include <sys/stat.h>













原创粉丝点击