c# 檔案分割與合并

來源:互聯網
上載者:User

標籤:

  工作中遇到要上傳下載的功能,而中間接收的伺服器最大隻能接收200M的檔案,對於大檔案無法滿足,所以只能在上傳的時候對大於100M的檔案進行分割,分割成的小檔案為原大檔案名稱+.temp+i。在下載端,下載完成後再對其進行合并。

  思路:檔案的分割與合并就是將檔案先轉換成流再對其進行操作。

/// <summary>
/// 分割檔案方法
/// </summary>
/// <param name="filePath">被分割檔案</param>

/// <param name="cutFileSize">被分割檔案大小</param>
/// <returns>分割後的檔案</returns>
string[] CutFile(string filePath,int cutFileSize)
{
string[] result;

//檔案流讀取檔案
using (FileStream cutFileStream = new FileStream(filePath, FileMode.Open))
{

//二進位讀取器
using (BinaryReader cutFileReader = new BinaryReader(cutFileStream))
{
byte[] cutBytes;

//分割的檔案個數
int fileCount =Convert.ToInt32(Math.Ceiling((double)cutFileStream.Length / cutFileSize));
result = new string[fileCount];
for (int i = 0; i < fileCount; i++)
{
//分割檔案儲存路徑
string saveFilePath=Application.StartupPath+"\\cutfile\\";

//分割檔案名稱
string cutFileName = Path.Combine(saveFilePath, Path.GetFileName(filePath)) + ".temp" + i;
result[i] = cutFileName;

//分割檔案流
using (FileStream tempStream = new FileStream(cutFileName, FileMode.OpenOrCreate))
{

//分割檔案二進位寫入器
using (BinaryWriter tempWriter = new BinaryWriter(tempStream))
{
cutBytes = cutFileReader.ReadBytes(cutFileSize);
tempWriter.Write(cutBytes);
}
}
}
}
}
return result;
}

/// <summary>
/// 合并檔案
/// </summary>
/// <param name="filePaths">要合并的檔案清單</param>
/// <param name="combineFile">合并後的檔案路徑帶檔案名稱</param>
void CombineFiles(string[] filePaths,string combineFile)
{
using (FileStream CombineStream = new FileStream(combineFile, FileMode.OpenOrCreate))
{
using (BinaryWriter CombineWriter = new BinaryWriter(CombineStream))
{
foreach (string file in filePaths)
{

using (FileStream fileStream = new FileStream(file, FileMode.Open))
{
using (BinaryReader fileReader = new BinaryReader(fileStream))
{
byte[] TempBytes = fileReader.ReadBytes((int)fileStream.Length);
CombineWriter.Write(TempBytes);
}
}
}
}
}
}

上傳下載有很多現成的類方法可以調用如WebClient或者通過http協議的HttpWebRequest,HttpWebResponse等都可實現。

c# 檔案分割與合并

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.