Linux C 两种方法实现复制拷贝文件
第一种方法:例如 linux 下的系统调用
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>char buff[1024];
int len;
int main(int argc, char const *argv[])
{char const *src_path = argv[1];char const *des_path = argv[2];int fd,fd2;fd = open(src_path,O_RDWR|O_CREAT);fd2 = open(des_path,O_RDWR|O_CREAT);while(len = read(fd,buff,1024)){write(fd2,buff,len);}return 0;
}
这里主要 用到的函数是 open,read,write
其中open 函数:
第一个参数为要打开文件的路径,第二个参数是功能flag,O_RDWR表示以读写方式打开文件,O_CREAT表示如果文件不存在则创建
返回一个文件描述符,表示打开了的文件
其中 read 函数:
第一个参数是一个文件描述符,表示:从该文件描述符表示的文件读取数据
第二个参数是把从文件读到的信息放在一个缓冲数组中
第三个参数是读一次读多少字节
其中 write 函数:
第一个参数,是把数据写到哪里(写到哪个文件描述符中)
第二个参数:把缓冲数组中的数据写到文件描述符中
第三个参数:表示一次写多少字节
注意:最好向上面代码那样用一个while循环来读写数据,这样的话,read 中的第三个参数就不用设置成太大,因为他会把数据全读完才退出循环
第二种方法:用文件流
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>char buff[1024];
int len;
int main(int argc, char const *argv[])
{FILE *in,*out;char const * src_path = argv[1]; //要被拷贝的文件路径char const * des_path = argv[2]; //拷贝的文件放在哪里(路径)in = fopen(argv[1],"r+");out = fopen(argv[2],"w+");while(len = fread(buff,1,sizeof(buff),in)){fwrite(buff,1,len,out);}return 0;
}
两种方法其实有异曲同工之妙,第一种方法的文件描述符 = 第二种方法的文件流指针 in 和 out。
Linux C 两种方法实现复制拷贝文件相关推荐
- 两种方法上传本地文件到github
自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...
- python安装模块的方法(两种方法,复制即可用)
这里简单的介绍python安装模块的两种方法. 第一种 在pycharm中安装模块 我这里是因为已经安装了,所以会出现这个. # 安装模块 # pip install 模块名 # 可以指定安装版本 如 ...
- python两种方法读取、修改文件的创建时间、修改时间、访问时间
看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在 ...
- 014day(h5的发展史,h5的兼容,h5的语法,h5的语义化,h5的常用标记,百分比下字体居中的两种方法,video视频文件,audio音频文件,
一.h5的发展史 1.HTML5草案的前身名为 Web Applications 1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的 HTML 工作团队. HTML 5 的 ...
- linux用两种方法找到cuond,很基础的Linuxshell脚本学习.doc
很基础的Linuxshell脚本学习 详细介绍Linux shell脚本基础学习(一) 2010-03-05 10:24 佚名 互联网 我要评论(9) 字号:T | T Linux shell脚本基础 ...
- uboot启动linux,uboot中ramdisk启动linux的两种方法
首先要确保内核支持ramdisk启动: The configuration of the kernel is as follow: 1) General setup-->[*] Initial ...
- C#读取资源文件的两种方法及保存资源文件到本地
方法1 GetManifestResourceStream VB.NET中资源的名称为:项目默认命名空间.资源文件名 C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名 例如: istr = ...
- elf格式转换为hex格式文件的两种方法
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...
- elf格式转换为hex格式文件的两种方法 1
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...
最新文章
- 股市币市:数据分析与交易所最新公告(20190228)
- 一个Bug,让我发现了Java界的.AJ(锥)!
- 怎么写遮罩层 css,css案例 - mask遮罩层的华丽写法
- 什么是逻辑分析仪?逻辑分析仪的参数、使用步骤和优势
- 全屏插件fullsizable.js失效???
- 云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式
- java私有方法单元测试_如何通过java反射的方式对java私有方法进行单元测试
- Scrapy分布式、去重增量爬虫的开发与设计
- JavaScript网页打印国际象棋棋盘
- 点云课程学习——点云结构与查找(一)
- 获取ftp服务器文件,ftp获取服务器文件
- 【龙芯1c库】封装gpio接口和使用示例
- 在VMware ESXi中使用固态硬盘
- AEJoy —— 详解 AE 如何将 png 序列帧导出为 SVGA 动画文件
- 机械结构day_13
- PMP思维导图—项目经理的角色
- 【文献心得】内存隔离技术研究现状调研
- 20220407——组合逻辑电路 3-8线译码器
- c语言中x10是什么意思啊,C语言笔记一(概念)
- 程序员苏享茂:怎样才能遇到对的人?