AleksandarKostadinov

Ex.Streams - 05. Slicing File

Dec 22nd, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.55 KB | None | 0 0
  1. namespace _05.Slicing_File
  2. {
  3.     using System.IO;
  4.     using System;
  5.  
  6.     public class Program
  7.     {
  8.         public static void Main()
  9.         {
  10.             var source = Path.Combine(Environment.CurrentDirectory, "..\\..\\randomVideo.mp4");
  11.  
  12.             var destinationDirectory = Path.Combine(Environment.CurrentDirectory, "..\\..\\DestinationForSlices\\");
  13.  
  14.             var parts = 5;
  15.  
  16.             Slice(source, destinationDirectory, parts);
  17.         }
  18.  
  19.         private static void Slice(string source, string destinationDirectory, int partsCount)
  20.         {
  21.             using (var fsReader = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.None))
  22.             {
  23.                 var header = new byte[4096];
  24.  
  25.                 var bufferSize =(int)Math.Ceiling((fsReader.Length - header.Length) / (double) partsCount );
  26.  
  27.                 fsReader.Read(header, 0, header.Length);
  28.  
  29.                 var buffer = new byte[bufferSize];
  30.  
  31.                 for (int i = 1; i <= partsCount; i++)
  32.                 {
  33.                     fsReader.Read(buffer, 0, buffer.Length);
  34.                    
  35.                     var filePathInDestination = $"{destinationDirectory}Part{i}.mp4";
  36.  
  37.  
  38.                     using (var fsWriter = new FileStream(filePathInDestination
  39.                         , FileMode.Create))
  40.                     {
  41.                         fsWriter.Write(header, 0, header.Length);
  42.                         fsWriter.Write(buffer, 0, buffer.Length);
  43.                     }
  44.                 }
  45.             }
  46.         }
  47.     }
  48. }
Add Comment
Please, Sign In to add comment