📄 csdn_文档中心_文件分割器.htm
字号:
<TBODY>
<TR>
<TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
<SCRIPT src="CSDN_文档中心_文件分割器.files/microsoft.js"></SCRIPT>
</TD>
<TD align=middle width=620>
<TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
<TBODY>
<TR bgColor=#ffffff>
<TD align=middle height=10 width=50></TD>
<TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A
href="http://www.csdn.net/develop/">文档中心</A> - <FONT
color=#003399>Visual C++</FONT> </TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>标题</FONT></TD>
<TD><B> 文件分割器</B> ghj1976(转贴)
</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD width=500> 文件分割器</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>出处</FONT></TD>
<TD height=10> <A
href="http://media.ccidnet.com/cce/389/03401.htm">http://media.ccidnet.com/cce/389/03401.htm</A></TD></TR>
<TR>
<TD align=middle height=10></TD>
<TD height=10></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>文件分割器 <BR><BR>李光强
<BR><BR> 文件分割器是个比较实用的工具。当我们要从别的电脑拷贝一个大于一张磁盘容量的文件或图片时就可以体会到它的好处。文件分割器的原理其实很简单,大体是这样:先把想要分割的文件的大小读出来,再用它去除每张磁盘的容量,得出所需的磁盘数,然后就开始读取文件内容,同时建立一个新文件,把读出来的内容存入新文件中,等到新文件的大小等于一张磁盘的容量时就暂停,然后又建立另一个新的文件,继续读取源文件的内容,把这些内容存入刚建立的文件中,如此循环直到分割结束。当然分割后的文件要重新合并才可以使用,所以合并也是必不可少的。合并过程是这样的:把分割的文件依次读出来,并用追加方式写入你所指定的文件中。<BR><BR> 下面是具体的实现过程:<BR><BR> #include
〈iostream.h〉<BR><BR> #include 〈fstream.h〉<BR><BR> #include
〈stdlib.h〉<BR><BR> int main(int argc,char * argv[])<BR><BR> {void
setfilename(char * dest,char * src,int i);<BR><BR> char
filename[100];<BR><BR> if(argc==1)<BR><BR> {cerr〈〈″命令不对″〈〈endl;<BR><BR> exit(1);}<BR><BR> if(argc==2)
<BR><BR> //以下为分割文件代码<BR><BR> {int
count=1,disksize=2048*705,disknum;<BR><BR> fstream
f2(argv[1],ios::in¦ios::binary¦ios::nocreate);
//打开要分割的文件<BR><BR> if(f2.fail()) exit(1);
//打开失败则退出<BR><BR> f2.seekg(0,ios::end);<BR><BR> streampos
pos2=f2.tellp();<BR><BR> f2.seekg(0,ios::beg);<BR><BR> disknum=pos2/disksize;<BR><BR> if(!disknum)
exit(0); <BR><BR> //如果文件小于一张磁盘容量则退出<BR><BR> if(pos2%disksize)
disknum=disknum+1;<BR><BR> for(int
b=1;b〈disknum+1;b++)<BR><BR> {int
y;<BR><BR> setfilename(filename,argv[1],b);<BR><BR> //调用建立文件名函数<BR><BR> fstream
f1(filename,ios::out¦ios::binary);<BR><BR> //建立新文件<BR><BR> do{y=f2.get();<BR><BR> //从要分割的文件读取数据<BR><BR> count=count+1;<BR><BR> f1.write((char
*)&y,sizeof(char));}<BR><BR> //往新文件写数据<BR><BR> while((y!=EOF)&&(count〈=disksize*b));<BR><BR> f1.close();
}<BR><BR> f2.close();}<BR><BR> else //以下为文件合并代码<BR><BR> {int
x;<BR><BR> fstream
f(argv[1],ios::out¦ios::app¦ios::binary);<BR><BR> for(int
i=2;i〈argc;i++)<BR><BR> {fstream
f1(argv[i],ios::in¦ios::binary¦ios::nocreate);<BR><BR> if(f1.fail())
exit(1);<BR><BR> x=f1.get();<BR><BR> while(x!=EOF)<BR><BR> {f.write((char
*)&x,sizeof(char));<BR><BR> x=f1.get();}<BR><BR> f1.close();}<BR><BR> f.close();}}<BR><BR> //以下为建立文件名函数<BR><BR> void
setfilename(char*dest,char *src,int i)<BR><BR> {int
x,a=0,b=0;<BR><BR> bool flag=false;<BR><BR> for(int
i=0;src[i]!=′\0′;i++)<BR><BR> if (src[i]==′.′)
flag=true;<BR><BR> //判断文件是否含有扩展名<BR><BR> if(flag)//如有扩展名则按以下代码处理<BR><BR> {while(src[b]!=′.′)<BR><BR> {dest[b]=src[b];<BR><BR> b++;}<BR><BR> a=b;<BR><BR> if(i〈=9)<BR><BR> {x=i+48;<BR><BR> dest[a]=(char)
x;}<BR><BR> for(int
i=0;i〈4;i++)<BR><BR> {if(src[b]!=′\0′)<BR><BR> {a=a+1;<BR><BR> dest[a]=src[b];<BR><BR> b=b+1;}<BR><BR> else
break;}<BR><BR> dest[a+1]=′\0′;}<BR><BR> else{//如没有扩展名则按下面代码处理<BR><BR> while(src[a]!=′\0′)<BR><BR> {dest[a]=src[a];<BR><BR> a=a+1;}<BR><BR> if(i〈=9)<BR><BR> {x=i+48;<BR><BR> dest[a]=char
(x);<BR><BR> dest[a+1]=′\0′;}}}<BR><BR> 以上程序在简体中文Windows 98
SE版下用Borland C++
5.0调试通过。由于篇幅的原因,本程序省了很多东西,比如最大只能分割成9个文件及很多的出错处理代码。我只希望本文能起到抛砖引玉的作用,让诸位高手编出更好的程序。此程序只可在命令窗口下使用,分割文件时,输入程序名和要分割的文件名;合并文件时,输入程序名和要合并的目标文件名及需要合并的源文件名。<BR><BR><BR><BR><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文档中心_文件分割器.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文档中心_文件分割器.files/ico_pencil.gif" width=16>
</SPAN> robo <I>(2000-12-25 22:05:08)</I> </TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3
width=532><BR>我也写了个文件切割器,有压缩、编码、DES加密等功能。去看看?http://stevechen.yeah.net/
<BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文档中心_文件分割器.files/ico_pencil.gif" width=16>
</SPAN> zhoukeke <I>(2000-11-20 13:35:44)</I>
</TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3 width=532><BR>这位老兄说的有理,小可刚好编了一个文件分割与合并的软件SCF
刚发给support@csdn.net.你若有兴趣,也可直接与我联系 zhoukeke@163.net 可可
<BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文档中心_文件分割器.files/ico_pencil.gif" width=16>
</SPAN> zhangzhonghua <I>(2000-11-17 17:45:43)</I>
</TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3
width=532><BR>这位老兄把原理讲得很明白了,也给了个简单实例。恰好我实际编了个程序“Simple Split -
精悍的自合并文件分割工具”,两者配合起来看,就更清楚了。
http://www.csdn.net/cnshare/softview.asp?id=2643 http://zzh-cn.com
<BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=1329">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文档中心_文件分割器.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -