C#文件打散合并
Code
//打散
int iFileSize = 1024000;
FileStream SplitFileStream = new FileStream("c:\\a.exe", FileMode.Open, FileAccess.Read);
BinaryReader SplitFileReader=new BinaryReader ( SplitFileStream ) ;
//以FileStream文件流来初始化BinaryReader文件阅读器
byte [ ] TempBytes ;
//每次分割读取的最大数据
int iFileCount = ( int ) ( SplitFileStream.Length / iFileSize ) ;
//小文件总数
if ( SplitFileStream.Length % iFileSize != 0 ) iFileCount++ ;
/* 循环将大文件分割成多个小文件 */
for (int i = 1; i <= iFileCount; i++)
{
string sTempFileName = "C:\\Files\\" + i.ToString().PadLeft(4, '0') + ".exe"; //小文件名
//确定小文件的文件名称
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();
}
//打散
int iFileSize = 1024000;
FileStream SplitFileStream = new FileStream("c:\\a.exe", FileMode.Open, FileAccess.Read);
BinaryReader SplitFileReader=new BinaryReader ( SplitFileStream ) ;
//以FileStream文件流来初始化BinaryReader文件阅读器
byte [ ] TempBytes ;
//每次分割读取的最大数据
int iFileCount = ( int ) ( SplitFileStream.Length / iFileSize ) ;
//小文件总数
if ( SplitFileStream.Length % iFileSize != 0 ) iFileCount++ ;
/* 循环将大文件分割成多个小文件 */
for (int i = 1; i <= iFileCount; i++)
{
string sTempFileName = "C:\\Files\\" + i.ToString().PadLeft(4, '0') + ".exe"; //小文件名
//确定小文件的文件名称
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();
}
Code
string[] arrFileNames = Directory.GetFiles("c:\\Files");
//获取存放分割后小文件所在目录所在的所有小文件
int iSumFile = arrFileNames.Length;
FileStream AddStream = new FileStream("c:\\Combine.exe",FileMode.Create,FileAccess.Write);
//以合并后的文件名称和打开方式来创建、初始化FileStream文件流
BinaryWriter AddWriter = new BinaryWriter(AddStream);
//以FileStream文件流来初始化BinaryWriter书写器,此用以合并分割的文件
/*循环合并小文件,并生成合并文件 */
for (int i = 0; i < iSumFile; i++)
{
FileStream TempStream = new FileStream(arrFileNames[i], FileMode.Open);
//以小文件所对应的文件名称和打开模式来初始化FileStream文件流,起读取分割作用
BinaryReader TempReader = new BinaryReader(TempStream);
//用FileStream文件流来初始化BinaryReader文件阅读器,也起读取分割文件作用
AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
//读取分割文件中的数据,并生成合并后文件
TempReader.Close();
//关闭BinaryReader文件阅读器
TempStream.Close();
//关闭FileStream文件流
}
AddWriter.Close();
//关闭BinaryWriter文件书写器
AddStream.Close();
//关闭FileStream文件流
string[] arrFileNames = Directory.GetFiles("c:\\Files");
//获取存放分割后小文件所在目录所在的所有小文件
int iSumFile = arrFileNames.Length;
FileStream AddStream = new FileStream("c:\\Combine.exe",FileMode.Create,FileAccess.Write);
//以合并后的文件名称和打开方式来创建、初始化FileStream文件流
BinaryWriter AddWriter = new BinaryWriter(AddStream);
//以FileStream文件流来初始化BinaryWriter书写器,此用以合并分割的文件
/*循环合并小文件,并生成合并文件 */
for (int i = 0; i < iSumFile; i++)
{
FileStream TempStream = new FileStream(arrFileNames[i], FileMode.Open);
//以小文件所对应的文件名称和打开模式来初始化FileStream文件流,起读取分割作用
BinaryReader TempReader = new BinaryReader(TempStream);
//用FileStream文件流来初始化BinaryReader文件阅读器,也起读取分割文件作用
AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
//读取分割文件中的数据,并生成合并后文件
TempReader.Close();
//关闭BinaryReader文件阅读器
TempStream.Close();
//关闭FileStream文件流
}
AddWriter.Close();
//关闭BinaryWriter文件书写器
AddStream.Close();
//关闭FileStream文件流