protected void button3_Click(object sender, System.EventArgs e) {
// Proceed
if(splitFile){
FileStream inFile = new FileStream(f.ToString(),FileMode.OpenOrCreate, FileAccess.Read);
for (int i = 0; i<x ; i++){
FileStream outFile = new FileStream(i+".sg",FileMode.OpenOrCreate, FileAccess.Write);
int data=0; byte [] buffer = new byte [eachSize];
if ((data=inFile.Read(buffer,0,eachSize))>0){
outFile.Write(buffer,0,data);
}
outFile.Close();
}
inFile.Close();
label4.Visible = true;
label4.Text = "SplitFile completed sucessfully";
}
else{
FileStream outFile = new FileStream(outputName,FileMode.OpenOrCreate, FileAccess.Write); for (int i=0;i<x; i++){
int data=0;
byte [] buffer = new byte [1024];
FileStream inFile = new FileStream(i+".sg",FileMode.OpenOrCreate, FileAccess.Read);
while ((data=inFile.Read(buffer,0,1024))>0){
outFile.Write(buffer,0,data);
}
inFile.Close();
}
outFile.Close();
label4.Visible = true;
label4.Text = "MergeFile completed sucessfully";
}
}
呵呵,一部分.如果需要,给你整个project
// Proceed
if(splitFile){
FileStream inFile = new FileStream(f.ToString(),FileMode.OpenOrCreate, FileAccess.Read);
for (int i = 0; i<x ; i++){
FileStream outFile = new FileStream(i+".sg",FileMode.OpenOrCreate, FileAccess.Write);
int data=0; byte [] buffer = new byte [eachSize];
if ((data=inFile.Read(buffer,0,eachSize))>0){
outFile.Write(buffer,0,data);
}
outFile.Close();
}
inFile.Close();
label4.Visible = true;
label4.Text = "SplitFile completed sucessfully";
}
else{
FileStream outFile = new FileStream(outputName,FileMode.OpenOrCreate, FileAccess.Write); for (int i=0;i<x; i++){
int data=0;
byte [] buffer = new byte [1024];
FileStream inFile = new FileStream(i+".sg",FileMode.OpenOrCreate, FileAccess.Read);
while ((data=inFile.Read(buffer,0,1024))>0){
outFile.Write(buffer,0,data);
}
inFile.Close();
}
outFile.Close();
label4.Visible = true;
label4.Text = "MergeFile completed sucessfully";
}
}
呵呵,一部分.如果需要,给你整个project
/// 文件分割
/// </summary>
/// <param name="FileName"></param> 要分割的大文件名称
/// <param name="DirectoryName"></param> 分割成的小文件放入的目录
/// <param name="FileSizeMB"></param> 小文件的最大长度,单位为MB
private void FileSplit(string FileName, string DirectoryName, float FileSizeMB)
{
int FileSize=(int)(FileSizeMB*1024*1024); //转换文件大小
if(Directory.Exists(DirectoryName)) Directory.Delete(DirectoryName,true); //如果原目录存在则删除
Directory.CreateDirectory(DirectoryName); //创建目录
FileStream MyStream=new FileStream(FileName, FileMode.Open); //文件流
BinaryReader MyReader=new BinaryReader(MyStream); //文件阅读器
byte[] TempBytes; //每次分割读取的最大数据
int FileCount=(int)(MyStream.Length/FileSize); //小文件总数
if(MyStream.Length%FileSize!=0) FileCount++;
string[] TempExtra=FileName.Split('.');
/* 循环将大文件分割成多个小文件 */
for(int i=1;i<=FileCount;i++)
{
string TempFile=DirectoryName+@"\"+i.ToString().PadLeft(4,'0')+"."+TempExtra[TempExtra.Length-1]; //小文件名
SetProgressInfomation(TempFile, i*1.0f/FileCount); //进度信息
FileStream TempStream=new FileStream(TempFile, FileMode.OpenOrCreate); //文件流
BinaryWriter TempWriter=new BinaryWriter(TempStream); //小文件书写器
TempBytes=MyReader.ReadBytes(FileSize); //读取大文件数据
TempWriter.Write(TempBytes); //数据写入小文件
TempWriter.Close(); //关闭小文件书写器
TempStream.Close(); //关闭文件流
}
MyReader.Close(); //关闭大文件阅读器
MyStream.Close(); //关闭文件流
} /// <summary>
/// 文件合并
/// </summary>
/// <param name="DirectoryName"></param> 要合并的小文件目录
/// <param name="FileName"></param> 合并后的文件名称
private void FileMerge(string DirectoryName, string FileName)
{
string[] MyFileNames=Directory.GetFiles(DirectoryName); //取得设置目录下的所有小文件
FileStream MyStream=new FileStream(FileName, FileMode.OpenOrCreate); //大文件流
BinaryWriter MyWriter=new BinaryWriter(MyStream); //大文件书写器
/* 循环多个小文件,并合并为大文件 */
int FileIndex=0;
foreach(string TempFile in MyFileNames)
{
SetProgressInfomation(TempFile, (++FileIndex)*1.0f/MyFileNames.Length); //进度信息
FileStream TempStream=new FileStream(TempFile, FileMode.Open); //小文件流
BinaryReader TempReader=new BinaryReader(TempStream); //小文件阅读器
MyWriter.Write(TempReader.ReadBytes((int)TempStream.Length)); //读出小文件数据,并写入大文件
TempReader.Close(); //关闭小文件阅读器
TempStream.Close(); //关闭小文件流
}
MyWriter.Close(); //关闭大文件书写器
MyStream.Close(); //关闭大文件流
}