切分组合文件
切分组合文件
谈到现在的邮箱,大家都会想到一个G字,那个时候的我很想开发出一个像Windows资源管理器一样的客户端,用上这么一个免费的午餐,大概英雄所见略同吧,你们看现在很多利用邮箱做网络硬盘的客户端都出来了,但是当我们看到那么大的邮箱最大的上传大小不能超过10M的时候,相信很多人都是一声感叹吧!!
俗话说:“上有政策,下有对策。”其实在任何地方都是通用的。也许朋友们已经想到可以把文件切分为N小块,传上去,用的时候再组合起来,good!!你们都是聪明人,我也搜索了一下这方面的软件,但我没找一款比较好的,不是只能切分指定格式的文件就是切分的速度太慢了。
踏破铁鞋无觅处,得来全不费功夫,前一段时间我去书店走走,看了一篇有关二进制读取的文章,里面介绍了有关这方面的原理和片段代码,哈哈,不就是我想要的吗?现把它贴出来,希望朋友们能从中有所收获,其实下面这些代码完成的就是一个文件切分组合的功能,而且与文件的格式无关,速度很快,想拥有我吗?还等什么:)
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace 切分组合文件
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.TextBox textBox7;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
return;
try
{
string FileName = this.openFileDialog1.FileName;
this.textBox1.Text = FileName;
FileInfo MyFileInfo = new FileInfo(FileName);
this.textBox2.Text = MyFileInfo.Length.ToString();
this.textBox3.Text = System.Math.Ceiling(Double.Parse(this.textBox2.Text)/Double.Parse(this.textBox4.Text)).ToString();
}
catch(Exception Err)
{
MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button2_Click(object sender, System.EventArgs e)
{
try
{
FileStream MyInFile = new FileStream(this.textBox1.Text,FileMode.OpenOrCreate,FileAccess.Read);
for(int i=0;i<Int32.Parse(this.textBox3.Text);i++)
{
FileStream MyOutFile = new FileStream(this.textBox1.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Write);
int data = 0;
int FileSize = Convert.ToInt32(this.textBox4.Text);
byte[] buffer = new byte[FileSize];
if((data=MyInFile.Read(buffer,0,FileSize))>0)
{
MyOutFile.Write(buffer,0,data);
}
MyOutFile.Close();
}
MyInFile.Close();
MessageBox.Show("切分文件操作成功!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("切分文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button3_Click(object sender, System.EventArgs e)
{
if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
return;
try
{
string FileName = this.openFileDialog1.FileName;
this.textBox5.Text = FileName;
this.textBox6.Text = FileName.Substring(0,FileName.Length-5);
int i = 0;
while(System.IO.File.Exists(this.textBox6.Text+i+".xyz"))
{
i++;
}
this.textBox7.Text = i.ToString();
}
catch(Exception Err)
{
MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button4_Click(object sender, System.EventArgs e)
{
try
{
FileStream MyOutFile = new FileStream(this.textBox6.Text,FileMode.OpenOrCreate,FileAccess.Write);
for(int i=0;i<Int32.Parse(this.textBox7.Text);i++)
{
int data = 0;
byte[] buffer = new byte[1024];
FileStream MyInFile = new FileStream(this.textBox6.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Read);
while((data=MyInFile.Read(buffer,0,1024))>0)
{
MyOutFile.Write(buffer,0,data);
}
MyInFile.Close();
}
MyOutFile.Close();
MessageBox.Show("组合文件操作完成","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("组合文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace 切分组合文件
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.TextBox textBox7;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
return;
try
{
string FileName = this.openFileDialog1.FileName;
this.textBox1.Text = FileName;
FileInfo MyFileInfo = new FileInfo(FileName);
this.textBox2.Text = MyFileInfo.Length.ToString();
this.textBox3.Text = System.Math.Ceiling(Double.Parse(this.textBox2.Text)/Double.Parse(this.textBox4.Text)).ToString();
}
catch(Exception Err)
{
MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button2_Click(object sender, System.EventArgs e)
{
try
{
FileStream MyInFile = new FileStream(this.textBox1.Text,FileMode.OpenOrCreate,FileAccess.Read);
for(int i=0;i<Int32.Parse(this.textBox3.Text);i++)
{
FileStream MyOutFile = new FileStream(this.textBox1.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Write);
int data = 0;
int FileSize = Convert.ToInt32(this.textBox4.Text);
byte[] buffer = new byte[FileSize];
if((data=MyInFile.Read(buffer,0,FileSize))>0)
{
MyOutFile.Write(buffer,0,data);
}
MyOutFile.Close();
}
MyInFile.Close();
MessageBox.Show("切分文件操作成功!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("切分文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button3_Click(object sender, System.EventArgs e)
{
if(this.openFileDialog1.ShowDialog()==DialogResult.Cancel)
return;
try
{
string FileName = this.openFileDialog1.FileName;
this.textBox5.Text = FileName;
this.textBox6.Text = FileName.Substring(0,FileName.Length-5);
int i = 0;
while(System.IO.File.Exists(this.textBox6.Text+i+".xyz"))
{
i++;
}
this.textBox7.Text = i.ToString();
}
catch(Exception Err)
{
MessageBox.Show("获取文件信息出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void button4_Click(object sender, System.EventArgs e)
{
try
{
FileStream MyOutFile = new FileStream(this.textBox6.Text,FileMode.OpenOrCreate,FileAccess.Write);
for(int i=0;i<Int32.Parse(this.textBox7.Text);i++)
{
int data = 0;
byte[] buffer = new byte[1024];
FileStream MyInFile = new FileStream(this.textBox6.Text+i+".xyz",FileMode.OpenOrCreate,FileAccess.Read);
while((data=MyInFile.Read(buffer,0,1024))>0)
{
MyOutFile.Write(buffer,0,data);
}
MyInFile.Close();
}
MyOutFile.Close();
MessageBox.Show("组合文件操作完成","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("组合文件出现错误:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
}