Android 音视频入门之C入门序列(十)- 操作文件入门

C里面打开文件API fopen 参数详解

fopen (参数1: 文件路径, 参数2: 模式(读r, 写w,rb作为二进制读,wb作为二进制文件写))

读取文件数据

int main () {

	// 文件路径
	char *fileNameStr = "D:\Temp\DerrFile.txt";
	// 打开一个API
	FILE *file = fopen(fileNameStr, "r");
	// 判断文件是否被打开 因为读一个文件可能这个文件不存在
    if (!file) {
        printf("文件打开失败,路径%s的文件有问题", fileNameStr);
        exit(0); // 退出程序
    }
    // 读取文件内容
    // 先定义缓存区域(容器)
    char buffer[10];
    // 文件读取API fgets(buffer, 10, file) 第一个参数,缓冲区, 第二个参数:读取的长度: 第三个参数: 文件的指针
    while (fgets(buffer, 10, file)) 
        printf("%s", buffer);
    }

	// 使用完记得关闭文件
	// 关闭文件 JAVA关闭流 
	// todo 最好是fopen之后就写fclose然后在中间写代码
    fclose(file);

}

写入数据文件

char *fileNameStr = "D:\\Temp\\DerrFileW.txt";
// 如果模式是w 会自动生成文件 0kb
FILE *file = fopen(fileNameStr, "w");
if (!file) {
    printf("文件打开失败,路径%s的文件有问题", fileNameStr);
    exit(0); // 退出程序
}
fputs("Derry Success run...", file);
// 关闭文件 JAVA关闭流
fclose(file);

文件的复制

// 源文件
char *fileNameStr = "D:\\Temp\\DerrFileW.txt";
// 复制的目标
char *fileNameStrCopy = "D:\\Temp\\DerrFileW2.txt";

// 复制文件需要用到二进制读  rb
FILE *file1 = fopen(fileNameStr, "rb");
// 需要向fileNameStrCopy写入数据所以为wb
FILE *fileCopy = fopen(fileNameStrCopy, "wb");
// 逻辑处理
if (!file1 || !fileCopy) {
    printf("文件打开失败,路径%s的文件有问题", fileNameStr);
    exit(0); // 退出程序
}
// 定义一个Buff
int buffer[512]; // 512*4 = 2048字节
int len; // 每次读取的长度
// fread: (参数1: 容器buff; 参数2:每次偏移多少 ;参数3: 容器大小)
// sizeof(buffer) / sizeof (int)=== 512
while ((len = fread(buffer, sizeof(int), sizeof(buffer) / sizeof(int), file1)) != 0) {
    fwrite(buffer, sizeof(int), len, fileCopy);
}

文件大小的获取

char *fileNameStr = "D:\\Temp\\DerrFileW.txt";
FILE *file = fopen(fileNameStr, "rb");

// 没有专门的获取文件大小的API
// 方法 读取头指针 头指针挪动位置 挪动到最后,就可以求得文件大小`
fseek(file, 0, SEEK_END); // file 就有了更丰富的值,给你的 file指针赋值,挪动的记录信息
// 读取 刚刚给file赋值的记录信息
long file_size = ftell(file);
printf("%s文件的字节大小是:%ld\n", fileNameStr, file_size);
fclose(file);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值