Может ли кто-нибудь проявить любезность и объяснить, как я получаю файлы одинакового размера после их копирования с использованием фрагментированного потока? Я предполагаю, что это потому, что последний блок все еще имеет buffer
размер 2048 , поэтому он ставит пустые байты в конце, но я не уверен, как бы я настроил последнее чтение?
Оригинальный размер: 15,1 МБ ( 15 835 745 байт)
Новый размер: 15,1 МБ ( 15 837 184 байт)
static FileStream incomingFile;
static void Main(string[] args)
{
incomingFile = new FileStream(
@"D:\temp\" + Guid.NewGuid().ToString() + ".png",
FileMode.Create,
FileAccess.Write);
FileCopy();
}
private static void FileCopy()
{
using (Stream source = File.OpenRead(@"D:\temp\test.png"))
{
byte[] buffer = new byte[2048];
var chunkCount = source.Length;
for (int i = 0; i < (chunkCount / 2048) + 1; i++)
{
source.Position = i * 2048;
source.Read(buffer, 0, 2048);
WriteFile(buffer);
}
incomingFile.Close();
}
}
private static void WriteFile(byte[] buffer)
{
incomingFile.Write(buffer, 0, buffer.Length);
}