Я пытаюсь создать класс для управления открытием определенного файла. Я хотел бы, чтобы одно из свойств было байтовым массивом файла, но я не знаю, насколько большой будет файл. Я попытался объявить массив байт, как:C# - Создание байтового массива неизвестного размера?
public byte[] file;
... но это не позволит мне установить его пути я пытался. br is my BinaryReader:
file = br.ReadBytes(br.BaseStream.Length);
br.Read(file,0,br.BaseStream.Length);
Ни один из способов не работает. Я предполагаю, что это потому, что я не инициализировал массив байтов, но я не хочу давать ему размер, если я не знаю размер. Есть идеи?
Редактировать: Хорошо, я думаю, это связано с тем, что длина BaseStream Binary Reader длинная, но ее читатели берут int32. Если я отброшу 64-х до 32-х, возможно ли потерять байты в больших файлах?
Чтобы ответить на ваш второй вопрос, файлы должны быть больше, чем два гигабайты, прежде чем это станет проблемой. –
@RobertHarvey - в то время как true, поскольку это ограничение, налагаемое средой выполнения, может стать проблемой со значительно меньшими файлами из-за давления памяти на машине. – codekaizen
@Walkerneo - Обратите внимание, что подпись этого метода позволяет сделать меньший массив, скажем, 4096 байт, а затем вызывать его в цикле, в то время как результат метода 'Read' совпадает с количеством байтов, попросил. – codekaizen