在C#中,你可以使用FileStream
和BinaryReader
類來實現文件分割。以下是一個簡單的示例,展示了如何將一個文件分割成多個較小的文件,每個文件包含固定大小的數據塊。
using System;
using System.IO;
class FileSplitter
{
static void Main()
{
string inputFilePath = "input.txt"; // 輸入文件路徑
string outputDirectory = "output"; // 輸出文件夾路徑
int chunkSize = 1024 * 1024; // 每個文件的大小(1MB)
// 確保輸出目錄存在
if (!Directory.Exists(outputDirectory))
{
Directory.CreateDirectory(outputDirectory);
}
// 讀取輸入文件的大小
long fileSize = new FileInfo(inputFilePath).Length;
// 計算需要分割的文件數量
int fileCount = (int)Math.Ceiling((double)fileSize / chunkSize);
// 分割文件
for (int i = 1; i <= fileCount; i++)
{
string outputFilePath = Path.Combine(outputDirectory, $"output_{i}.txt");
// 讀取當前文件塊
using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read))
using (BinaryReader binaryReader = new BinaryReader(inputStream))
{
// 移動到當前文件塊的開始位置
inputStream.Seek(i * chunkSize, SeekOrigin.Begin);
// 讀取當前文件塊的數據
byte[] buffer = binaryReader.ReadBytes((int)(fileSize - inputStream.Position));
// 將當前文件塊的數據寫入輸出文件
using (FileStream outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
using (BinaryWriter binaryWriter = new BinaryWriter(outputStream))
{
binaryWriter.Write(buffer);
}
}
}
Console.WriteLine("文件分割完成!");
}
}
這個示例中,我們首先讀取輸入文件的大小,然后計算需要分割的文件數量。接下來,我們使用for
循環遍歷每個文件塊,讀取其數據并將其寫入一個新的輸出文件中。最后,我們關閉所有打開的流并輸出完成消息。