在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
循环遍历每个文件块,读取其数据并将其写入一个新的输出文件中。最后,我们关闭所有打开的流并输出完成消息。