我们几乎天天用到复制粘贴,做开发人员的我们有没有想过其原理那?
其实复制粘贴就是文件操作,只不过是文件读写,再说明白点就是文件拷贝操作,那我们就一起看看文件拷贝的实现。

1.C++实现:

#include <iostream>
#include <fstream>
#include <ctime>using namespace std;int main(int argc, char** argv)
{ifstream infile("D:\\soft\\Windows 7 Ultimate x86.iso", ios::in|ios::binary);ofstream outfile("F:\\soft\\Windows 7 Ultimate x86.iso", ios::out|ios::binary);if(argc<3){cerr<<"命令错误!"<<endl;return -1;}if(!infile){cerr<<"文件打开失败!"<<endl;return -1;}time_t t1, t2;char szBuff[1025];time(&t1);while(!infile.eof()){infile.read(szBuff, sizeof(szBuff));outfile.write(szBuff, infile.gcount() );}int iFilesize=0;infile.seekg(0, ios::end);iFilesize=infile.tellg();infile.seekg(0);cout<<iFilesize<<endl;infile.close();outfile.close();time(&t2);//  cout<<"文件拷贝成功!"<<endl;cout<<"拷贝用时:"<<t2-t1<<endl;return 0;
}

2.C语言实现:

#include <stdio.h>
#include <time.h>int main(int argc, char** argv)
{if(argc<3){printf("命令语法错误!\n");return 0;}int iRet;int szBuff[1024];time_t t1,t2;FILE* fp1=fopen(argv[1], "rb");FILE* fp2=fopen(argv[2], "wb");if(NULL==fp1){printf("打开文件失败!\n");return 0;}time(&t1);while(!feof(fp1)){iRet=fread(szBuff, 1, sizeof(szBuff), fp1);fwrite(szBuff, 1, iRet, fp2);}fclose(fp1);fclose(fp2);time(&t2);printf("拷贝文件成功,共耗时%d秒!\n",t2-t1);return 0;
}

3.Window API实现:

/*
Winows实现文件的拷贝,
参数lpSrcFile 文件路径1
参数lpDesFile  文件路径2
*/
BOOL DJCopyFile(LPCTSTR lpSrcFile,LPCTSTR lpDesFile)
{HANDLE hSrcFile=CreateFile(lpSrcFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);HANDLE hDesFile=CreateFile(lpDesFile,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(hSrcFile==INVALID_HANDLE_VALUE || hDesFile==INVALID_HANDLE_VALUE) return FALSE;char szBuff[1024];DWORD dwBytesRead;DWORD dwBytesWritten;while(ReadFile(hSrcFile,szBuff,sizeof(szBuff),&dwBytesRead,NULL) && dwBytesRead!=0){WriteFile(hDesFile,szBuff,dwBytesRead,&dwBytesWritten,NULL);}CloseHandle(hSrcFile);CloseHandle(hDesFile);return TRUE;
}

文件拷贝(复制粘贴)相关推荐

  1. Windows和Ubuntu系统之间文件相互复制粘贴

    Windows和Ubuntu系统之间文件相互复制粘贴 在安装Ubuntu系统后发现与Windows系统的文件不能相互复制,网上查了很多教程,发现都是不能用的,能实现的方法如下所示: 第一步: sudo ...

  2. Java实现TXT文件的复制粘贴

    导语:在日常的生活中,在我们使用计算机的过程中,复制粘贴往往给办公.学习等带来了很大的方便,毕竟人类的本质就是复读机,但是Ctrl+C和Crtl+V的方法是在操作系统上实现的,那么程序员要如何通过Ja ...

  3. 远程桌面不能传输文件或复制粘贴文件

    远程至目标主机,打开任务管理器, 详细信息中找到rdpclip.exe,结束掉该进程. 然后 开始键==>输入rdpclip.exe  运行 然后拖动传输文件和复制粘贴快捷键都可以了.

  4. html文件无法复制粘贴,无法复制粘贴的解决办法

    复制粘贴功能无法使用的情况相信大家都遇到过,特别是中过冲击波病毒的机器,更是容易出现这个现象,怎么办呢?以下几个办法你可以试一下: 建议:先重新启动机子试试,可能是偶尔系统故障,如果不行那就用下面的方 ...

  5. 什么不可以清除文件计算机病毒,电脑文件没法复制粘贴,是中了什么病毒了.要怎么清除...

    系统不能复制粘贴.拖动.IE窗口下的下级链接不能打开.无法使用搜索功能等等现象.这是怎么回事? 本人开始检查系统,在进行sreng扫描时程序提示系统rpc服务出错,现进行自动修复.难道是rpc服务造成 ...

  6. ubuntu和kali安装vmtool后依旧无法拖拽文件,复制粘贴,解决办法

    命令行下执行 apt-get install open-vm-tools-desktop fuse 以安装open-vm-tools 部分提示安装错误,找不到指定目录, 解决方法: 1.更新系统和软件 ...

  7. VMware上面实现Ubuntu和Windows文件的复制粘贴功能(以及虚拟机当中插入U盘能够显示)

    一:安装VMware-tools工具 点击以下链接有详细的教程和操作(如何在Ubuntu18.04上面安装VMware-tools) http://t.csdn.cn/is6rZ 二:实现Window ...

  8. Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴

    基本思路就是边搜索边复制,这里用的是广度搜索(BFS) import java.io.BufferedInputStream; import java.io.BufferedOutputStream; ...

  9. Python实现文件的复制粘贴

    用 Python 复制文件的 9 种方法具体是: shutil copyfile() shutil copy() shutil copyfileobj() shutil copy2() os pope ...

  10. Ubuntu系统进行复制粘贴文件显示没有权限的解决办法

    Ctrl + alt + T打开终端 输入命令sudo nautilus 然后就可以打开一个不需要管理员权限的界面,可以直接复制粘贴 亲测有效!!! 借鉴于博客:https://blog.csdn.n ...

最新文章

  1. 4月17日云栖精选夜读 | 在阿里做了五年技术主管,我有话想说
  2. [My B.S paper draft]我的本科答辩论文草稿
  3. local sandbox html里的script tag是如何load到memory里的
  4. 反沙箱——SetErrorMode
  5. java2组随机数的共通数_java随机数产生-指数分布 正态分布 等
  6. go使用redis——redigo使用HMSET存储结构体
  7. 「大数据+」依然火热!BDTC首日爆点有点多!
  8. Ioc--控制反转详解
  9. java初学者代码练习题
  10. 微信小程序的版本管理
  11. 微信加好友CALL地址 3.4.5.27
  12. 【随笔 || 逐源·极简学习法】
  13. 不定积分知识结构图_不定积分计算法则总结
  14. 简述利用PE系统破解Windows密码
  15. 基于MOD09Q1数据批量计算NDVI
  16. 干货!教你4种文件恢复方法,再也不怕误删除!
  17. 实体对齐 算法_[2017]Bootstrapping Entity Alignment with Knowledge Graph Embedding
  18. 建一个网站需要花多少钱?
  19. 谷歌中国开发者网站地址
  20. 每个人都应该知道的 18 个强大的 Excel 快捷键!

热门文章

  1. 仿照网易云音乐界面 android特效
  2. 农信社c语言考试题库,农村信用社最新计算机专业考试题
  3. GOP(Group of pictrues) I帧 B帧 P帧 MPEG PTS DTS 码率 帧率
  4. 软件架构风格 仓库风格_功能风格–第7部分
  5. .NET 6 OAuth2.0 IdentityServer4 4.X PasswordToken(创建Token) RefreshToken(刷新Token) RevokeToken(撤销Token
  6. 澳门电讯php 工资,月薪4500的小伙首次去澳门,被澳门的工资水平和消费水平吓到了!...
  7. C语言 之编译器优化
  8. 医疗SaaS:发生在云端的二次医疗革命
  9. plus仿element库
  10. ubuntu服务器完全卸载nginx服务器