鱼C论坛

 找回密码
 立即注册
查看: 6968|回复: 21

[技术交流] C++实现复制文件操作

[复制链接]
发表于 2015-12-17 19:57:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zooo 于 2016-5-16 13:59 编辑

刚开始学习小甲鱼的教程,感觉讲的不错,第四讲中留得课后作业是实现复制文件的操作。之前论坛中看了一个实现方式,不过有点问题,于是自己尝试编了一个,测试可以实现对exe,txt,doc格式的文件进行复制。
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4. int main( int argc,char *argv[] )
  5. {
  6.         if( 3!=argc )
  7.         {
  8.                 cerr<<"输入格式:copyFile.exe 源文件 目标文件"<<endl;
  9.                 return 0;
  10.         }
  11.         fstream in(argv[1],ios::in|ios::binary);
  12.         if( !in )//如果没有找到文件则输出提示
  13.         {
  14.                 cerr<<"打开"<<argv[1]<<"失败"<<endl;
  15.                 in.close();
  16.                 return 0;
  17.         }
  18.        
  19.         fstream out(argv[2],ios::out|ios::binary);
  20.         if( !out )
  21.         {
  22.                 cerr<<"打开"<<argv[2]<<"失败"<<endl;
  23.                 out.close();
  24.                 return 0;
  25.         }

  26.         char temp;
  27.         while( in.get(temp) )
  28.         {
  29.                 out<<temp;
  30.         }
  31.         out<<endl;
  32.         cout<<"成功复制文件"<<endl;
  33.         in.close();
  34.         out.close();
  35.         return 0;
  36. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-30 11:07:30 | 显示全部楼层
顶礼膜拜了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-30 22:52:39 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-31 08:56:13 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-13 12:31:51 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-6 13:34:22 | 显示全部楼层
漂亮
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-8 23:40:32 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-9 01:11:50 | 显示全部楼层
文件复制是直接一个个字符流(二进制流)复制?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-9 11:09:12 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-9 12:20:31 | 显示全部楼层
清音阁阁主 发表于 2016-5-9 01:11
文件复制是直接一个个字符流(二进制流)复制?

二进制流
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-9 12:56:18 | 显示全部楼层
看一看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-11 00:39:28 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-11 07:58:20 | 显示全部楼层
不错 赞一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-11 14:13:07 | 显示全部楼层
自己写的不能复制中文字符,过来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-11 14:31:15 | 显示全部楼层
现在在学python, 等搞完python再来学这个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-15 08:47:02 From FishC Mobile | 显示全部楼层
看看学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-16 11:40:51 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-26 02:02:20 | 显示全部楼层
楼主的这个程序有一个小问题,强迫症患者表示不能忍,
复制的文件比原文件多了一个字节,想来应该是 "out << endl;" 这一句导致的,
然后用16进制查看器打开发现多的一个字节内容是"0A",这个在Windows里面好像换行符,也应证了前面的猜想,
于是我把这一行注释掉再次测试,复制的文件和原文件就完全一样了。


最后,非常感谢楼主提供解决思路,我自己测试了好多方案都没有成功,直到看到这一篇帖子。



评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zooo + 2 + 2 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-7-31 15:38:28 | 显示全部楼层
看看~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-28 20:11:16 | 显示全部楼层
为啥我的电脑运行就直接显示输入格式的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表