使用read, write, scanf, printf等系统调用或库函数,可以实现简单的文件复制程序,但效率上有明显差别。

方法一:逐个字符读入并输出

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>int main(void){char c;int in, out;in=open("file.in", O_RDONLY);out=open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);while(read(in, &c, 1)==1){write(out, &c, 1);}exit(0);
}

执行效率:

[lujinhong@lujinhong BeginningLinuxProgramming]$ TIMEFORAMT="" time ./a.out
0.31user 8.07system 0:08.40elapsed 99%CPU (0avgtext+0avgdata 1392maxresident)k
0inputs+9032outputs (0major+110minor)pagefaults 0swaps

方法二:每次读入1K再输出

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>#define READ_SIZE 1024int main(void){char c[READ_SIZE];int in, out;int nread;in=open("file.in", O_RDONLY);out=open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);while((nread=read(in, c, READ_SIZE))>0){write(out, c, nread);}exit(0);
}

执行效率:

[lujinhong@lujinhong BeginningLinuxProgramming]$ TIMEFORAMT="" time ./a.out
0.00user 0.01system 0:00.01elapsed 92%CPU (0avgtext+0avgdata 1408maxresident)k
0inputs+9032outputs (0major+111minor)pagefaults 0swaps

文件复制函数的效率比较相关推荐

  1. java 多种类型文件复制_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedO ...

  2. java复制文件_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 - 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,Buffere ...

  3. python文件函数_python文件和文件夹复制函数

    本文实例为大家分享了python文件和文件夹复制函数,供大家参考,具体内容如下 文件复制函数 代码和注释如下: # 文件复制函数 def copy_file(file1,file2): ''' 将文件 ...

  4. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度。

    封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度等. 我的第一篇博客 前段时间无意间想到如何控制文件复制过程的复制速度,并且能实时获得复制进度.对于一个几兆甚至更小的文件,调用API ...

  5. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度

    封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度等. 前段时间无意间想到如何控制文件复制过程的复制速度,并且能实时获得复制进度.对于一个几兆甚至更小的文件,调用API函数CopyFi ...

  6. 字节流与字符流对文件复制的效率

    字节流与字符流在用于文件复制时效率差距较大 分别对文件夹下的txt文件,jpg文件与mp4文件进行复制粘贴操作,并使用日期类进行运行时间记录,比较几种方法的效率. public class copy ...

  7. 缓冲流效率测试_文件复制

    (1)使用字节输入流对象FileInputStream.输出流对象FileOutputStream测试 package com.IOAndProperties.CopyFile;import java ...

  8. C语言文件操作函数总结——超详细

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 文件与流 在C语言中有三种标准流: stdin(standard input stream)标 ...

  9. Go 学习笔记(54)— Go 第三方库之 uber-go/zap/lumberjack(记录日志到文件、支持自动分割日志、支持日志级别、打印调用文件、函数和行号)

    1. 简要说明 zap 是 uber 开源的 Go 高性能日志库,支持不同的日志级别, 能够打印基本信息等,但不支持日志的分割,这里我们可以使用 lumberjack 也是 zap 官方推荐用于日志分 ...

最新文章

  1. 《深度探索C++对象模型》--7 站在对象模型的尖端
  2. Unet项目解析(4): ./src/RetinaNN_predict.py
  3. python上下文管理关键字_详解 Python 中的 with 与 上下文管理器
  4. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
  5. Lego-美团接口自动化测试实践
  6. 基于event 实现的线程安全的优先队列(python实现)
  7. C++ vector 内存分配与回收机制
  8. 工程计算——实战:追赶法扰动分析
  9. win7修复计算机无法修复工具栏,win7任务栏消失怎么办?win7任务栏消失的两种恢复方法...
  10. win10c盘扩容_系统C盘满了空间不足的扩容?
  11. Python+bs4实现爬取小说并下载到本地
  12. Odoo报表的report标签和报表格式定义
  13. 微信小程序学习记录——4.框架-视图层
  14. 盐城北大青鸟东台基地学员生日会 | 美好的时光里,你我同在
  15. 重庆大学计算机学院张敏,张敏(安徽大学生命科学学院院长)_百度百科
  16. BIM在工程中的20种典型功能
  17. HDU4355-三分
  18. 微信小程序云开发-云函数篇
  19. Rufus开源版U盘引导制作工具V3.16
  20. Ubuntu在中国的展望

热门文章

  1. URI和URL的区别(12万访问量)
  2. 15行代码AC_ 【蓝桥杯】兴趣小组(解题报告+思考)
  3. centos 7 局域网丢包排查_宽带发生故障怎么办?教你几招轻松排查
  4. Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)
  5. smarty去除html标签,Smarty与脚本中的html标签爆裂
  6. python通过connect对象连接数据库对吗_Python连接数据库学习之DB-API详解
  7. mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法
  8. 加拿大大学计算机排名2015,加拿大大学计算机排名
  9. 关系代数的自然连接符号_初中数学知识清单之代数式的认识
  10. 湖北大学计算机学院胡院长,学院召开新一届领导干部任命宣布大会