切分组合文件

                     切分组合文件

     谈到现在的邮箱,大家都会想到一个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);
            }

        }

    }

}

posted on 2005-11-18 00:02  jiangyix  阅读(1883)  评论(4编辑  收藏  举报