扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:马金虎 来源:天极网 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:【文件分割】项目的运行界面 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者