数码资讯
文件操作-使用Linux系统调用
1。创建一个文件 Int creat(const char *的文件名,mode_t模式) 文件名:要创建的文件名(包括路径,默认为当前路径) 模式:创建文件的架构访问权限。 常见的模式: s_irusr可读 s_iwusr写 s_ixusr执行 读,写,可执行,可执行的s_irwxu 您还可以直接
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
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 }
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 }
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。