?? 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>標(biāo)題</FONT></TD>
<TD><B> 文件分割器</B> ghj1976(轉(zhuǎn)貼)
</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>關(guān)鍵字</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><!--文章說明信息結(jié)束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>文件分割器 <BR><BR>李光強(qiáng)
<BR><BR> 文件分割器是個比較實(shí)用的工具。當(dāng)我們要從別的電腦拷貝一個大于一張磁盤容量的文件或圖片時就可以體會到它的好處。文件分割器的原理其實(shí)很簡單,大體是這樣:先把想要分割的文件的大小讀出來,再用它去除每張磁盤的容量,得出所需的磁盤數(shù),然后就開始讀取文件內(nèi)容,同時建立一個新文件,把讀出來的內(nèi)容存入新文件中,等到新文件的大小等于一張磁盤的容量時就暫停,然后又建立另一個新的文件,繼續(xù)讀取源文件的內(nèi)容,把這些內(nèi)容存入剛建立的文件中,如此循環(huán)直到分割結(jié)束。當(dāng)然分割后的文件要重新合并才可以使用,所以合并也是必不可少的。合并過程是這樣的:把分割的文件依次讀出來,并用追加方式寫入你所指定的文件中。<BR><BR> 下面是具體的實(shí)現(xiàn)過程:<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> //調(diào)用建立文件名函數(shù)<BR><BR> fstream
f1(filename,ios::out¦ios::binary);<BR><BR> //建立新文件<BR><BR> do{y=f2.get();<BR><BR> //從要分割的文件讀取數(shù)據(jù)<BR><BR> count=count+1;<BR><BR> f1.write((char
*)&y,sizeof(char));}<BR><BR> //往新文件寫數(shù)據(jù)<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> //以下為建立文件名函數(shù)<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> //判斷文件是否含有擴(kuò)展名<BR><BR> if(flag)//如有擴(kuò)展名則按以下代碼處理<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{//如沒有擴(kuò)展名則按下面代碼處理<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調(diào)試通過。由于篇幅的原因,本程序省了很多東西,比如最大只能分割成9個文件及很多的出錯處理代碼。我只希望本文能起到拋磚引玉的作用,讓諸位高手編出更好的程序。此程序只可在命令窗口下使用,分割文件時,輸入程序名和要分割的文件名;合并文件時,輸入程序名和要合并的目標(biāo)文件名及需要合并的源文件名。<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
剛發(fā)給support@csdn.net.你若有興趣,也可直接與我聯(lián)系 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>這位老兄把原理講得很明白了,也給了個簡單實(shí)例。恰好我實(shí)際編了個程序“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>你沒有登陸,無法發(fā)表評論。 請先<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">網(wǎng)站簡介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">廣告服務(wù)</A> - <A
href="http://www.csdn.net/map/map.shtm">網(wǎng)站地圖</A> - <A
href="http://www.csdn.net/help/help.asp">幫助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">聯(lián)系方式</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>百聯(lián)美達(dá)美公司 版權(quán)所有 京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><!--內(nèi)容結(jié)束//--><!--結(jié)束//--></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -