扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:马金虎 来源:天极网 2007年11月13日
关键字:
![]() 图01:【文件分割】项目之【新建项目】对话框 |
组件类型 | 组件名称 | 属性 | 设置结果 |
Button | button1 | FlatStyle | Flat |
button1 | Text | 执行 | |
button2 | FlatStyle | Popup | |
button2 | Text | ... | |
Form | Form1 | Text | 文件分割 |
Form1 | MaximizeBox | False | |
Form1 | MinimizeBox | True | |
Form1 | FormBorderStyle | FormBorderStyle.FixedSingle | |
ComboBox | comboBox1 | Items | 720 |
comboBox1 | Items | 1440 | |
comboBox1 | Items | 2880 | |
Label | label1 | Text | 请选择大小: |
label2 | Text | 请选择文件: | |
label3 | Text | 输入存放目录: | |
label4 | Text | (单位:K) | |
TextBox | TextBox1 | Text | |
TextBox2 | Text |
![]() 图02:【文件分割】项目的设计后的界面 |
using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; using System.IO ; using System.Text ; using System.Data.OleDb ; using System.Windows.Forms.Design ; |
private void button2_Click ( object sender , System.EventArgs e ) { openFileDialog1.Title = "请选择要分割的文件名称" ; DialogResult drTemp = openFileDialog1.ShowDialog ( ) ; if ( drTemp == DialogResult.OK && openFileDialog1.FileName != string.Empty ) { textBox1.Text = openFileDialog1.FileName ; button1.Enabled = true ; } } |
private void button1_Click ( object sender , System.EventArgs e ) { int iFileSize= Int32.Parse ( comboBox1.Text ) *1024 ; //根据选择来设定分割的小文件的大小 if ( Directory.Exists ( textBox2.Text ) ) Directory.Delete ( textBox2.Text ,true ) ; //如果计算机存在存放分割文件的目录,则全部删除此目录所有文件 else Directory.CreateDirectory ( textBox2.Text ) ; //反之则在计算机创建目录 FileStream SplitFileStream=new FileStream ( textBox1.Text , FileMode.Open ) ; //以文件的全路对应的字符串和文件打开模式来初始化FileStream文件流实例 BinaryReader SplitFileReader=new BinaryReader ( SplitFileStream ) ; //以FileStream文件流来初始化BinaryReader文件阅读器 byte [ ] TempBytes ; //每次分割读取的最大数据 int iFileCount = ( int ) ( SplitFileStream.Length / iFileSize ) ; //小文件总数 progressBar1.Maximum = iFileCount ; if ( SplitFileStream.Length % iFileSize != 0 ) iFileCount++ ; string [ ] TempExtra = textBox1.Text.Split ( ’.’ ) ; /* 循环将大文件分割成多个小文件 */ for ( int i = 1 ; i <= iFileCount ; i++ ) { string sTempFileName = textBox2.Text + @"\"+i.ToString ( ) .PadLeft ( 4 ,’0’ ) + "." + TempExtra[ TempExtra.Length - 1 ] ; //小文件名 //确定小文件的文件名称 FileStream TempStream = new FileStream ( sTempFileName , FileMode.OpenOrCreate ) ; //根据文件名称和文件打开模式来初始化FileStream文件流实例 BinaryWriter TempWriter = new BinaryWriter ( TempStream ) ; //以FileStream实例来创建、初始化BinaryWriter书写器实例 TempBytes = SplitFileReader.ReadBytes ( iFileSize ) ; //从大文件中读取指定大小数据 TempWriter.Write ( TempBytes ) ; //把此数据写入小文件 TempWriter.Close ( ) ; //关闭书写器,形成小文件 TempStream.Close ( ) ; //关闭文件流 progressBar1.Value = i - 1 ; } SplitFileReader.Close ( ) ; //关闭大文件阅读器 SplitFileStream.Close ( ) ; MessageBox.Show ( "分割成功!" ) ; progressBar1.Value = 0 ; } |
![]() 图03:【文件分割】项目的运行界面 |
濠电姷鏁告慨鐑姐€傛禒瀣劦妞ゆ巻鍋撻柛鐔锋健閸┾偓妞ゆ巻鍋撶紓宥咃躬楠炲啫螣鐠囪尙绐為梺褰掑亰閸撴盯鎮惧ú顏呪拺闂傚牊鍗曢崼銉ョ柧婵犲﹤瀚崣蹇旂節婵犲倻澧涢柛瀣ㄥ妽閵囧嫰寮介妸褋鈧帡鏌熼挊澶婃殻闁哄瞼鍠栭幃婊堝煛閸屾稓褰嬮柣搴ゎ潐濞叉ê鐣濈粙璺ㄦ殾闁割偅娲栭悡娑㈡煕鐏炲墽鐭嬫繛鍫熸倐濮婄粯鎷呯粵瀣異闂佹悶鍔嬮崡鍐茬暦閵忋倕鍐€妞ゆ劑鍎卞皬闂備焦瀵х粙鎴犫偓姘煎弮瀹曚即宕卞Ο闀愮盎闂侀潧鐗嗛幊搴㈡叏椤掆偓閳规垿鍩ラ崱妞剧凹濠电姰鍨洪敋閾荤偞淇婇妶鍛櫤闁稿鍊圭换娑㈠幢濡纰嶉柣搴㈣壘椤︾敻寮诲鍫闂佸憡鎸鹃崰搴敋閿濆鏁嗗〒姘功閻绻涢幘鏉戠劰闁稿鎹囬弻锝呪槈濞嗘劕纾抽梺鍝勬湰缁嬫垿鍩為幋锕€宸濇い鏇炴噺閳诲﹦绱撻崒娆戝妽妞ゃ劌鎳橀幆宀勫磼閻愰潧绁﹂柟鍏肩暘閸斿矂鎮為崹顐犱簻闁圭儤鍨甸鈺呮倵濮橆剦妲归柕鍥у瀵粙濡歌閸c儳绱撴担绛嬪殭婵☆偅绻堝濠氭偄绾拌鲸鏅i悷婊冪Ч閹﹢鎳犻鍌滐紲闁哄鐗勯崝搴g不閻愮儤鐓涢悘鐐跺Г閸犳﹢鏌℃担鐟板鐎规洜鍠栭、姗€鎮╅搹顐ら拻闂傚倷娴囧畷鍨叏閹惰姤鈷旂€广儱顦崹鍌炴煢濡尨绱氶柨婵嗩槸缁€瀣亜閺嶃劎鈽夋繛鍫熺矒濮婅櫣娑甸崨顔俱€愬銈庡亝濞茬喖宕洪埀顒併亜閹哄棗浜鹃梺鎸庢穿婵″洤危閹版澘绫嶉柛顐g箘椤撴椽姊虹紒妯哄鐎殿噮鍓欒灃闁告侗鍠氶崢鎼佹⒑閸撴彃浜介柛瀣閹﹢鏁冮崒娑氬幈闁诲函缍嗛崑鍡樻櫠椤掑倻纾奸柛灞剧☉缁椦囨煙閻熸澘顏柟鐓庢贡閹叉挳宕熼棃娑欐珡闂傚倸鍊风粈渚€骞栭銈傚亾濮樺崬鍘寸€规洖缍婇弻鍡楊吋閸涱垽绱遍柣搴$畭閸庨亶藝娴兼潙纾跨€广儱顦伴悡鏇㈡煛閸ャ儱濡煎褜鍨伴湁闁绘ǹ绉鍫熺畳闂備焦瀵х换鍌毼涘Δ鍛厺闁哄洢鍨洪悡鍐喐濠婂牆绀堟慨妯挎硾閽冪喖鏌曟繛褍瀚烽崑銊╂⒑缂佹ê濮囨い鏇ㄥ弮閸┿垽寮撮姀鈥斥偓鐢告煥濠靛棗鈧懓鈻嶉崶銊d簻闊洦绋愰幉楣冩煛鐏炵偓绀嬬€规洟浜堕、姗€鎮㈡總澶夌处