- 以写方式打开文件
int fd = open(“/home/mytest/123.txt”,
O_WRONLY | O_CREAT,
0644);
参数1: 文件路径
参数2: 标识位,O_WRONLY表示写入,
O_CREAT表示当不存在时,创建新文件
参数:0644,表示创建文件时的权限位
(0644: 字面常量,8进制)
- 以读方式打开文件
int fd = open(“/home/mytest/123.txt”,
O_RDONLY);
参数1:文件路径
参数2:O_RDONLY: 以只读方式打开
参数3:省略
- 写文件:
write(fd, buf, n);
读文件:
int n = read(fd, buf, maxsize);
关闭文件:
close(fd);
fd: file descriptor文件描述符,是一个整数
- 以下三者选一:
O_RDONLY 只读方式
O_WRONLY 以只写方式打开文件
O_RDWR 以可读写方式打开文件
额外的标识位:
O_CREAT可与O_WRONLY联用,若欲打开的文件不存在则自
动建立该文件
O_TRUNC 可与O_WRONLY联用,在打开文件时清空文件
O_APPEND可与O_WRONLY联用,表示追加内容
O_NONBLOCK 表示以“非阻塞”方式读/写数据时
read.cpp
// ANSI C
#include <stdio.h>
// Linux API
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
// 注:你是否对/home/mytest/123.txt有读权限
int fd = open("/home/mytest/123.txt", O_RDONLY);
if(fd < 0)
{
printf("failed to open file!\n");
return -1;
}
char data[12];
int n = read(fd, data, 12);
if(n>0)
{
data[n] = 0;
printf("read: %s \n", data);
}
close(fd);
}
write.cpp
// ANSI C
#include <stdio.h>
// Linux API
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
// 注:你是否对/home/mytest/目录有写权限?
int fd = open("/home/mytest/123.txt",
O_WRONLY|O_CREAT,
0644);
if(fd < 0)
{
printf("failed to open file!\n");
return -1;
}
char data[12] = "hello";
write(fd, data, 5);
close(fd);
}
stdc.cpp
// ANSI C
#include <stdio.h>
#include <string.h>
int main()
{
// 注:你是否对/home/mytest/目录有写权限?
FILE* fp = fopen("/home/mytest/aaa.txt", "wb");
if(!fp)
{
// 无权访问
printf("failed to open file!\n");
return -1;
}
// 使用linux的标准换行符\n
char buf[] = "hello\nworld\n";
fwrite(buf, 1, strlen(buf), fp);
fclose(fp);
}