文件拷贝(复制粘贴)
我们几乎天天用到复制粘贴,做开发人员的我们有没有想过其原理那?
其实复制粘贴就是文件操作,只不过是文件读写,再说明白点就是文件拷贝操作,那我们就一起看看文件拷贝的实现。
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;
}
文件拷贝(复制粘贴)相关推荐
- Windows和Ubuntu系统之间文件相互复制粘贴
Windows和Ubuntu系统之间文件相互复制粘贴 在安装Ubuntu系统后发现与Windows系统的文件不能相互复制,网上查了很多教程,发现都是不能用的,能实现的方法如下所示: 第一步: sudo ...
- Java实现TXT文件的复制粘贴
导语:在日常的生活中,在我们使用计算机的过程中,复制粘贴往往给办公.学习等带来了很大的方便,毕竟人类的本质就是复读机,但是Ctrl+C和Crtl+V的方法是在操作系统上实现的,那么程序员要如何通过Ja ...
- 远程桌面不能传输文件或复制粘贴文件
远程至目标主机,打开任务管理器, 详细信息中找到rdpclip.exe,结束掉该进程. 然后 开始键==>输入rdpclip.exe 运行 然后拖动传输文件和复制粘贴快捷键都可以了.
- html文件无法复制粘贴,无法复制粘贴的解决办法
复制粘贴功能无法使用的情况相信大家都遇到过,特别是中过冲击波病毒的机器,更是容易出现这个现象,怎么办呢?以下几个办法你可以试一下: 建议:先重新启动机子试试,可能是偶尔系统故障,如果不行那就用下面的方 ...
- 什么不可以清除文件计算机病毒,电脑文件没法复制粘贴,是中了什么病毒了.要怎么清除...
系统不能复制粘贴.拖动.IE窗口下的下级链接不能打开.无法使用搜索功能等等现象.这是怎么回事? 本人开始检查系统,在进行sreng扫描时程序提示系统rpc服务出错,现进行自动修复.难道是rpc服务造成 ...
- ubuntu和kali安装vmtool后依旧无法拖拽文件,复制粘贴,解决办法
命令行下执行 apt-get install open-vm-tools-desktop fuse 以安装open-vm-tools 部分提示安装错误,找不到指定目录, 解决方法: 1.更新系统和软件 ...
- VMware上面实现Ubuntu和Windows文件的复制粘贴功能(以及虚拟机当中插入U盘能够显示)
一:安装VMware-tools工具 点击以下链接有详细的教程和操作(如何在Ubuntu18.04上面安装VMware-tools) http://t.csdn.cn/is6rZ 二:实现Window ...
- Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
基本思路就是边搜索边复制,这里用的是广度搜索(BFS) import java.io.BufferedInputStream; import java.io.BufferedOutputStream; ...
- Python实现文件的复制粘贴
用 Python 复制文件的 9 种方法具体是: shutil copyfile() shutil copy() shutil copyfileobj() shutil copy2() os pope ...
- Ubuntu系统进行复制粘贴文件显示没有权限的解决办法
Ctrl + alt + T打开终端 输入命令sudo nautilus 然后就可以打开一个不需要管理员权限的界面,可以直接复制粘贴 亲测有效!!! 借鉴于博客:https://blog.csdn.n ...
最新文章
- 4月17日云栖精选夜读 | 在阿里做了五年技术主管,我有话想说
- [My B.S paper draft]我的本科答辩论文草稿
- local sandbox html里的script tag是如何load到memory里的
- 反沙箱——SetErrorMode
- java2组随机数的共通数_java随机数产生-指数分布 正态分布 等
- go使用redis——redigo使用HMSET存储结构体
- 「大数据+」依然火热!BDTC首日爆点有点多!
- Ioc--控制反转详解
- java初学者代码练习题
- 微信小程序的版本管理
- 微信加好友CALL地址 3.4.5.27
- 【随笔 || 逐源·极简学习法】
- 不定积分知识结构图_不定积分计算法则总结
- 简述利用PE系统破解Windows密码
- 基于MOD09Q1数据批量计算NDVI
- 干货!教你4种文件恢复方法,再也不怕误删除!
- 实体对齐 算法_[2017]Bootstrapping Entity Alignment with Knowledge Graph Embedding
- 建一个网站需要花多少钱?
- 谷歌中国开发者网站地址
- 每个人都应该知道的 18 个强大的 Excel 快捷键!
热门文章
- 仿照网易云音乐界面 android特效
- 农信社c语言考试题库,农村信用社最新计算机专业考试题
- GOP(Group of pictrues) I帧 B帧 P帧 MPEG PTS DTS 码率 帧率
- 软件架构风格 仓库风格_功能风格–第7部分
- .NET 6 OAuth2.0 IdentityServer4 4.X PasswordToken(创建Token) RefreshToken(刷新Token) RevokeToken(撤销Token
- 澳门电讯php 工资,月薪4500的小伙首次去澳门,被澳门的工资水平和消费水平吓到了!...
- C语言 之编译器优化
- 医疗SaaS:发生在云端的二次医疗革命
- plus仿element库
- ubuntu服务器完全卸载nginx服务器