C#文件分割的方法
更新時(shí)間:2015年07月06日 15:49:39 作者:DTC2
這篇文章主要介紹了C#文件分割的方法,針對(duì)小于等于64M文件和大于64M文件兩種情況分析了C#文件分割的實(shí)現(xiàn)技巧,需要的朋友可以參考下
本文實(shí)例講述了C#文件分割的方法。分享給大家供大家參考。具體如下:
1. 小文件分割(適用于小于等于64M的文件):
using System;
using System.IO;
string filetosplit=@"C:\temp\data.bin";
string targetpath=@"D:\store";
FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
long FileLength=fsr.Length;
byte[] btArr = new byte[FileLength];
fsr.Read(btArr, 0, (int)FileLength);
fsr.Close();
int splitcount=3;
long PartLength=FileLength/splitcount+FileLength%splitcount;
int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
string strFileName=Path.GetFileName(filetosplit);
long byteCount=0;
for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
{
FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, (int)byteCount, (int)(i<nCount?PartLength:FileLength-byteCount));
fsw.Flush();
fsw.Close();
}
2. 大文件分割(適用于大于64M的文件)
using System;
using System.IO
string filetosplit=@"C:\temp\data.bin";
string targetpath=@"D:\store";
FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
long FileLength=fsr.Length;
byte[] btArr = new byte[FileLength];
fsr.Read(btArr, 0, (int)FileLength);
fsr.Close();
int splitcount=3;
long PartLength=FileLength/splitcount+FileLength%splitcount;
int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
string strFileName=Path.GetFileName(filetosplit);
long byteCount=0;
for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
{
FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
long bc=byteCount;
long PartCount=i<nCount?PartLength:FileLength-bc;
int PartBufferCount=(int)(PartCount<int.MaxValue/32?PartCount:int.MaxValue/32);
int nc=(int)Math.Ceiling((double)PartCount/PartBufferCount);
for(int j=1;j<=nc;j++,bc=(j<nCount?bc+PartBufferCount:PartCount-PartBufferCount))
fsw.Write(btArr, (int)bc, (int)(j<nc?PartBufferCount:PartCount-bc));
fsw.Flush();
fsw.Close();
}
fsr.Close();
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#使用隨機(jī)數(shù)編寫班級(jí)點(diǎn)名器的示例代碼
本文主要介紹了C#使用隨機(jī)數(shù)編寫班級(jí)點(diǎn)名器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C#實(shí)現(xiàn)斐波那契數(shù)列的幾種方法整理
這篇文章主要介紹了C#實(shí)現(xiàn)斐波那契數(shù)列的幾種方法整理,主要介紹了遞歸,循環(huán),公式和矩陣法等,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
C#中DataTable實(shí)現(xiàn)篩選查詢的示例
本文主要介紹了C#中DataTable實(shí)現(xiàn)篩選查詢的示例,主要是DataTable進(jìn)行過濾篩選,常用的一些方法為:Select,dataview,具有一定的參考價(jià)值,感興趣的可以了解一下2023-04-04
C#實(shí)現(xiàn)的xml操作類完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的xml操作類,包含C#針對(duì)xml的創(chuàng)建、刪除、遍歷、插入等常見操作,需要的朋友可以參考下2016-06-06

