using System.Collections.Generic;
namespace FragmentarUnirAchivo
public static void Main()
Console.WriteLine("Hello World");
var sourceFilename = @"D:\code\PeruCIM\ci2.platinocim\src\Ci2.PeruCim.Web\VideosEditados\AMA401_2019-03-20T19-50-36.617Z_000000010619.mp4";
var targetFilename = @"D:\code\PeruCIM\ci2.platinocim\src\Ci2.PeruCim.Web\VideosEditados\copiado.mp4";
var bufferSize = 1024 * 1000;
var bytes = ReadBytes(sourceFilename);
while (offset < bytes.Length)
var buffer = Slice(bytes, offset, bufferSize);
Transmit(targetFilename, buffer.ToArray());
Console.WriteLine($"Tiempo de copiado : {(DateTime.Now-t).TotalSeconds} segundos" );
private static void Transmit(string targetFilename, byte[] buffer)
using (FileStream target = new FileStream(targetFilename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
target.Position= target.Length;
target.Write(buffer, 0, buffer.Length);
private static Span<byte> ReadBytes(string sourceFilename)
using (Stream from = new FileStream(sourceFilename, FileMode.Open, FileAccess.Read))
Span<byte> buffer = new byte[from.Length];
var read = from.Read(buffer);
private static Span<byte> Slice(Span<byte> buffer, int start, int length)
if (start >= buffer.Length) return new Span<byte>(new byte[0]);
if (start + length > buffer.Length) length = buffer.Length - start;
return buffer.Slice(start, length);