1。创建一个文件



Int creat(const char *的文件名,mode_t模式)



文件名:要创建的文件名(包括路径,默认为当前路径)



模式:创建文件的架构访问权限。



常见的模式:



s_irusr可读



s_iwusr写



s_ixusr执行



读,写,可执行,可执行的s_irwxu



您还可以直接使用该数字来表示文件的访问权限:



可执行1



写2



可读性4



上述三个值的总和,例如可读的和可执行的可执行文件7(1 + 2 + 4)。



没有权限0



1 #包括



2 #包括



三



4 #包括



5 #包括



6 #包括



七



8的空隙create_file(文件的名字){



九



0755创建文件的10 *属性:



11个文档所有者可以读取和执行。



12个文件所有者的组是可读的和可执行的。



13其他用户可读的可执行文件。



14如果(创建文件名,0755)< 0){



15 printf(创建文件%s失败!n



16出口(exit_failure);



17 } { { }



18 printf(创建文件%s成功!n



19}



20 }



二十一



22 int main(int argc、argv { } { char *)



23 int i;



24如果(argc > 2){



25 perror(你没有输入文件名,请再试一次!;



26出口(exit_failure);



27 }



二十八



29(i = 1;I)



30 create_file(argv {我});



31 }



三十二



33出口(exit_success);



34 }



三十五



2。打开文件



国际开放(const char*的路径名,int标志)



国际开放(const char*的路径名,int的旗帜,mode_t模式)



公共开放旗(旗):



o_rdonly只读方式打开



o_wronly只写模式打开



o_rdwr读写打开



o_append添加方式打开



o_create创建一个文件



o_noblock非阻塞模式打开



如果o_create标志时,必须指定的方式来表示文件的访问权限。



1 #包括



2 #包括



三



4 #包括



5 #包括



6 #包括



七



8 int main(int argc、argv { } { char *)



9 INT FD;



10如果(argc > 2){



11将(请输入打开文件的路径!;



12出口(1);



13 }



十四



15、如果在o_creat旗参数表示,如果文件不存在,系统将创建该文件,该文件的权限是由第三个参数决定的,这是0755



16、如果没有o_creat flah参数,第三个参数没有影响。这时,如果你要打开文件不存在,是错误的。



17 / /所以FD =开放(argv { 1 },o_rdwr),打开指定的文件



18如果((FD =开放(argv { 1 },o_creat | o_rdwr,0755))<0){



19 perror(打开文件失败!;



20出口(1);



21 } { { }



22 printf(%d成功打开文件!n



二十三



24 }



25关(FD);



26出口(0);



二十七



28 }



三.关闭文件



关闭(int FD)



一个文件描述符(非负整数)



4。读取文件



读一个整数(int fd,const void * buf,size_t长度)



从文件中指向的文件描述符fd缓冲指向缓冲区读取长度字节,并返回字节数,实际上是读。



5。写一个文件



int写(int fd,const void * buf,size_t长度)



在buf,文件描述符fd指向文件缓冲点写入长度字节,并返回的字节数实际上是写。



6。位置文件(移动文件指针)



Int lseek(int fd,offset_t偏移,在那里)



文件读写指针相对于所处的位置移动偏移字节。如果操作成功,则文件指针返回到文件头的位置。



何处可取下列值:



seek_set:对相关文件的开始



seek_cur:当前位置的相对文件读写指针



seek_end:相关的文件结束



偏移是负的,向前移动。



7。访问权限的判断



int访问(const char*的路径名,中断方式)



Pathname:这个文件的名称



模式:判断访问权限,你可以采取以下的价值或combinations.r_ok:文件的可读性,w_ok:文件可写,x_ok:可执行文件,f_ok:文件存在。



返回值:当我们测试成功时,函数返回0,否则如果一个条件不符合,返回到1。



1 #包括



2 #包括



3 #包括



4 #包括



5 #包括



六



7 #定义buffer_size 1024



八



9 int main(int argc、argv char *)



10 { {



11内景from_fd,to_fd;



12内景bytes_read,bytes_write;



13 buffer_size } { char缓冲区;



14个字符的指针;



十五



16如果(argc!= 3)



17 { {



18 fprintf(stderr,的用法:%s FromFile文件 / N /



19出口(1);



20 }



二十一



22 开放源代码文件



23如果(((from_fd =开放(argv { 1 },o_rdonly))= = 1)



24 { {



25 fprintf(stderr,打开%s的错误:%s /



26出口(1);



27 }



二十八



29 创建目标文件



30如果(((to_fd =开放(argv { 2 },o_wronly | o_creat,s_irusr | s_iwusr))= = 1)



31 { {



32 fprintf(stderr,打开%s的错误:%s /



33出口(1);



34 }



三十五



36 下面的代码是文件代码的经典副本。



37,(bytes_read =读(from_fd,缓冲,buffer_size))



38 { {



39个一个致命错误



40如果((bytes_read = = 1)(errno!= eintr))打破;



41如果(bytes_read > 0)



42 { {



43 PTR =缓冲;



44,(bytes_write =写(to_fd,PTR,bytes_read))



45 { {



46个一个致命错误



47如果((bytes_write = = 1)(errno!= eintr))打破;



48 完成所有字节读取



49如果(bytes_write = = bytes_read)打破;



50 /只写部分,继续写。



51如果(bytes_write > 0)



52 { {



53 PTR + = bytes_write;



54 bytes_read = bytes_write;



55 }



56 }



57写一个致命错误



58如果(bytes_write = = 1)打破;



59 }



60 }



61关(from_fd);



62关(to_fd);



63出口(0);



64 }