一个大文件可以分割为多个小文件吗?c#将一个文件分割为多个小文件小方法

济南云服务器 2025年7月15日06:06:48C#教程一个大文件可以分割为多个小文件吗?c#将一个文件分割为多个小文件小方法已关闭评论1321阅读模式

现在网络已经非常的普及,用户在使用网络时可以非常方便的自由传输文件,但是,如果用户用户想要传输的文件过大,则就会出现传输不方便的现象,这时将该大文件分割为多个小文件,然后,分批上传,就是一种不错的解决问题方法,那么,我们如何通过cc#编程语言将某个大文件分割为多个小文件呢?

关键代码:

 

class FileSplitter
{
    // 分割文件的方法
    public static void SplitFile(string filePath, long chunkSize)
    {
        if (!File.Exists(filePath))
        {
            Console.WriteLine("文件不存在!");
            return;
        }

        string directory = Path.GetDirectoryName(filePath);
        string fileName = Path.GetFileNameWithoutExtension(filePath);
        string extension = Path.GetExtension(filePath);

        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[chunkSize];
            int bytesRead;
            int partNumber = 1;

            while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                string partFileName = Path.Combine(directory, $"{fileName}_part_{partNumber:D3}{extension}");
                
                using (FileStream output = new FileStream(partFileName, FileMode.Create, FileAccess.Write))
                {
                    output.Write(buffer, 0, bytesRead);
                }

                Console.WriteLine($"已创建分片文件:{partFileName}");
                partNumber++;
            }
        }

        Console.WriteLine("文件分割完成!");
    }

    // 程序入口
    static void Main(string[] args)
    {
        Console.Write("请输入要分割的文件路径:");
        string filePath = Console.ReadLine();

        Console.Write("请输入每个分片的大小(MB):");
        if (!int.TryParse(Console.ReadLine(), out int mbSize) || mbSize <= 0)
        {
            Console.WriteLine("输入无效!");
            return;
        }

        long chunkSize = mbSize * 1024 * 1024; // 转换为字节
        SplitFile(filePath, chunkSize);
    }
}

济南云服务器
  • 本文由 发表于 2025年7月15日06:06:48
  • 转载请务必保留本文链接:http://news.hcsw666.com/2132