首页 > 代码库 > 文件I/O操作之文件的打开,创建,关闭和定位-基于Linux系统文件IO
文件I/O操作之文件的打开,创建,关闭和定位-基于Linux系统文件IO
1.
打开文件
#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>int open(const char *pathname,int flag); //打开一个现有的文件int open(const char *pathname,int flags,mode_t mode); //若文件不存在,则先创建它//成功则返回文件描述副,否则返回-1//pathname为文件的相对或绝对路径名
文件描述符从3开始(0,1,2被标准IO占用),依次被分配给打开的文件
flags取值:
O_RDONLY; //只读O_WRONLY; //只写O_RDWR; //读写O_CREAT;O_EXCL;O_NOCTTY;O_TRUNG;O_APPEND;O_NONBOLCK;O_NONELAY;O_SYNC;
mode取值
S_ISUID;S_ISGID;S_SVTX;S_IRUSR;S_IWUSR;S_IXUSR;S_IRGRP;S_IWGRP;S_IXGRP;S_IROTH;S_IWOTH;S_IXOTH;
组合mode
S_IRWXU;S_IRWXG;S_IRWXO;
示例:
打开文件
1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<fcntl.h> 4 5 #include<stdio.h> 6 #include<stdlib.h> 7 #include<string.h> 8 9 #define FLAGS O_WRONLY|O_CREAT|O_TRUNC10 #define MODES S_IRWXU|S_IXGRP|S_IRGRP|S_IROTH|S_IXOTH11 12 int main(void)13 {14 const char *pathname;15 int fd;16 char pn[30];17 printf("please input the pathname <30 strings:\n");18 scanf("%s",pn);19 pathname=pn;20 if((fd=open(pathname,FLAGS,MODES))==-1)21 {22 printf("error can‘t open file! \n");23 exit(255);24 }25 printf("OK ,file has been open!\n");26 printf("fd=%d\n",fd);27 return 0;28 }
2.
创建文件
#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>int creat(const char *pathname,mode_t mode);
若成功,返回以只写方式打开的文件描述符,否则返回-1
注意:creat等效于
open(pathname,O_WRONLY|O_CREAT|O_TRUNC,mode);
创建文件并打开的新方式
open(pathname,O_RDWR|O_CREAT|O_TRUNC,mode);
3.
关闭文件
#include<unistd.h>int close(int fd);
fd是文件描述符,成功返回0,出错返回-1
4.
定位文件
#include<sys/types.h>#include<unistd.h>off_t lseek(int fd,off_t offset,int whence);
offset时定位的位移量大小,与whence参数有关
SEEK_SET; //位移量就是据文件开头的offset字节SEEK_CUR; //距当前位置offset字节SEEK_END; //距文件尾offset字节
后两个参数允许取offset负值
可使用此方法获取文件当前位移量
off_t offset;offset=lseek(fd,0,SEEK_CUR);
也可时使用此方法测试文件是否能被设置偏移量
文件I/O操作之文件的打开,创建,关闭和定位-基于Linux系统文件IO
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。