第一次用vc写的文件切割小软件_CutFile
学vc也几个星期了 总想写个小小的东西出来
但却担心自己懂的还太少
刚好带做项目老师给我出了个题目
就是写个能分割文件的小冬冬
并要我2个星期完成 于是便恨下心开始了
想不到不到一星期就完成了 哈哈 偷笑一下
其实是个非常非常简单东西
非常非常的没什么技术含量 .`.`.`.`
不过写完后也觉得成才了许多
看来以后要多写写
期间曾多次遇到难点而且csdn询问
在此谢谢在csdn为我解答各位仁兄 使我能顺利完成
现把代码一并贴出来 给向我一样的初学者参考参考
此代码没用异常检测 功能代码突出 刚好适合小菜阅读
高手们见笑了
/*=========================================================================================
名称:CutFile
作者:幻刃(Lsaint)
版本:1.0
功能:★将目标目标文件切割为一系列指定大小的小文件
★将切割后的小文件重新组合为源文件
备注:此代码为突出可读性 为实现异常检测的功能
也未考虑源文件过大或切割后块数过多的问题 =========================================================================================*/
void CspDlg::OnBnClickedButton1() //切割文件
{
UpdateData();
CFile file1(sFile,CFile::modeReadWrite|CFile::shareDenyNone); // 打开源文件
CFile file2;
DWORD fileposition=file1.GetPosition();//文件读写位置
DWORD fileremaind=file1.GetLength(); //源文件大小
CString dFilename[21]; //文件名数组
CString num; //文件号码
sFile=file1.GetFilePath(); //源路径
void* buffer=malloc(pSize); // 设置 缓存区
for(int i=0;i<=20;i++)
{
num.Format(_T("%d"),i); // _T .. 2005默认用UNICODE编码....
dFilename[i]=sFile+num;
}
int n=fileremaind/pSize+1;
for(int j=0;j<n;j++)
{
file2.Open(dFilename[j],CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone,0);
file1.Seek(fileposition,CFile::begin);
if(fileremaind<pSize) //最后一块文件大小用取余获得
{pSize=fileremaind%pSize;}
file1.Read(buffer,pSize);//读
file2.Write(buffer,pSize);//写
fileposition=fileposition+pSize;
fileremaind=fileremaind-pSize;
file2.Close();
}
file1.Close();
// TODO: 在此添加控件通知处理程序代码
}
void CspDlg::OnBnClickedButton2()//选择要切割的文件
{
CFileDialog dlg(1,0,0,4|2,0,0,0);
if(dlg.DoModal()==IDOK)
{
sFile=dlg.GetPathName();
UpdateData(0);
}
}
void CspDlg::OnBnClickedButton3()// 选择输出文件夹
{
TCHAR pszBuffer[_MAX_PATH];
BROWSEINFO bi; LPITEMIDLIST pidl;
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = pszBuffer;
bi.lpszTitle = _T("选择输出路径");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
if((pidl = SHBrowseForFolder(&bi)) != NULL)
{
if(SHGetPathFromIDList(pidl, pszBuffer))
{
CString strTemp(pszBuffer); dFile = strTemp;
if (dFile.GetLength() <= 1)
{
}
else if (dFile.Right(1) != _T("//"))
dFile += _T("//");
}
}
UpdateData(0); //显示
}
void CspDlg::OnBnClickedButton4() //合并
{
UpdateData();
CFile file1;
CFile file2;//(零)
file1.Open(sFile.Left(sFile.GetLength()-1),CFile::modeReadWrite|CFile::modeCreate);
//创建分割前的文件(整)
CString num;
CString name;
for(int i=0;i<20;i++)
{
num.Format(_T("%d"),i); //后缀数字
name=sFile.Left(sFile.GetLength()-1)+num; //顺序读取文件名
if(file2.Open(name,CFile::modeRead) ) //存在则打开分割后文件
{
void* buffer=malloc(file2.GetLength());//分配缓存
file2.Read(buffer,file2.GetLength()); //读取数据
file1.Write(buffer,file2.GetLength()); //写入数据
file2.Close();
}// End if//
}// End for//
file1.Close(); // 关闭文件
}//End Lsaint
第一次用vc写的文件切割小软件_CutFile相关推荐
- python文件分发_python 写一个文件分发小程序
一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...
- 2008-2013年写的10个小软件
01. Delphi - PhotoManager.rar 02. Delphi - 大杀器.rar 03. Delphi - 简单模拟考试系统.rar 04. Delphi - 系统安全管理007. ...
- 批量重命名文件名称小软件
说在前面 先扯会,如果不是Android开发的,要使用本小软件,可以直接到下面正题 在Android开发中,有时会遇到大量文件需要重命名的情况,特别是一些图片文件.有两个同学遇到过这种情况,我暂时还没 ...
- vc不能添加文件的小工具
用于修复 VC6.0打开文件时出错退出的插件, 1: 下载一个FileTool软件(是个压缩包),下载后通过vc运行编译生成一个dll文件,然后把此文件拷贝到vc安装目录下Program Files\ ...
- VC 写 TXT 文件分割器 附代码
TXT文件分割器主要将很大的TXT文档分割成预定大小的文档 主要通过cfile类来实现 这就是最后的效果. 选择路径主要通过cfiledlg类来实现 // TODO: Add your control ...
- 可以打开mdb文件的小软件
下载地址: http://dl-sh-ocn-1.pchome.net/09/rh/DatabaseBrowser.zip 转载于:https://www.cnblogs.com/bobo-show/ ...
- 刚学c++window编程没多久写了一个整人小软件有些bug
#include<windows.h> #include<iostream> #include<fstream> using namespace std; int ...
- 文件处理小程序(包含哈夫曼文件压缩-解压等 C语言)
文末有源代码 文件压缩.解压.加密(异或加密).解密功能等都实现了,但是处理后文件命名有点不合理,采用了加前缀的方法得到处理后的文件名,应该是改变后缀名. 应该这种更好:test.txt --- &g ...
- Java---设计模式app小软件汇总应用
写了一个app小软件,重点不在于软件,软件bug挺多,也没去修改. 这个小软件只是为了更好的说明和了解设计模块而做的. Java 程序设计–包结构 Java程序设计的系统体系结构很大一部分都体现在包结 ...
- java切割文件_Java如何将大文件切割成小文件
运用Java编写代码将一个大文件切割成指定大小的小文件 思路: 对已知文件进行切割操作 –> 得到多个碎片文件 使用: 1. 1个字节输入流 –> 读取已知文件中的数据 2. 多个字节输出 ...
最新文章
- java opencv calcCovarMatrix 计算协方差矩阵
- 思科网络技术学院CCNA教程
- 线程运行程序c语言,理解线程1 C语言示例的程序
- 每一种创伤,都是一种成熟
- 【技术解决方案】优化FFmpeg编码器参数设置
- 学习编程的方法与建议
- ROS推荐链接:UNIX/LINUX专为初学者的教程和命令 http://www.ee.surrey.ac.uk/Teaching/Unix/
- matlab封闭曲线拟合 (针对一些列离散点)
- keil5手动下载并添加pack
- DCOS(centos 7.4/7.6)
- 11.绘制统计图形——误差棒图
- 2022年知网研学“研究生科研素养提升”系列公益讲座题库答案分享一波
- 国王的金币for循环
- 【EXE PE】了解pe段--PE结构详解
- 塔望3W消费战略全案丨绿力冬瓜茶 三十年饮料老品牌,两年复兴战全国
- 左轮吉他-吉他初学者很不错的教程【优酷视频教程】
- 电商直通车主图设计教程
- Hadoop | MapReduce之 WordCount词频统计
- 专访丁衣:极路由这一年
- 红帽OpenShift容器平台3.3提高DevOps采用率和应用扩展能力
热门文章
- linux命令怎么查看日志文件,linux查看日志文件命令
- wgs84坐标系经纬度投影_南方cass坐标转经纬度_坐标转经纬度软件
- 普中科技51单片机开发板
- 集成运算放大器之积分电路搭建
- Linux 系统启动与服务管理
- python gps显示_MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
- rs232接口_终于有人把常用的三种通讯方式:RS485、RS232、RS422讲明白了
- 微软雅黑字体,百度云下载
- Win10 安装 Rational Rose
- php机器人聊天对话框,PHP实现QQ聊天机器人