Предполагая, что приложение определено в отдельном файле (для тех, кто может искать этот вопрос), измените
`withStyles(styles)(Recipe);`
на
export default withStyles(styles)(Recipe);
, как Райан уже объяснил 'с помощью Стилей является компонентом высшего порядка, который создает и возвращает новый компонент '
Если Вы передадите свое копирование потоком, т.е. считаете буфер, запишите буфер, считайте буфер, запишите буфер и т.д., пока у Вас не закончились данные, то только потребуется столько же памяти сколько размер буфера. Я ожидаю Файл. Копия, чтобы сделать это (в собственном коде Windows, по общему признанию).
Если Вы хотите сделать это сами, используйте что-то вроде этого:
public void CopyData(Stream input, Stream output)
{
byte[] buffer = new byte[32 * 1024];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, read);
}
}
Это только возьмет 32K, однако большой, поток.
Править: Как отмечено в комментариях, потоки могут иметь свои собственные буферы также, но дело в том, что Вы могли все еще передать очень большой файл, не заканчиваясь память.
Нет, целый файл не будет загружен в память.
Объем потребляемой памяти будет зависеть от размера буферов, которые Вы используете для чтения и записи и любых внутренних буферов, сохраняемых потоком.
Класс FileStream использует внутренний буфер, размер которого может быть указан в перегрузке конструктора и какие значения по умолчанию к 0x1000 байтам (вероятно, зависящий от реализации - это значение было получено путем исследования класса FileStream с помощью Отражателя Лутца).
Если Вы называете что-то как ReadToEnd()
затем да, содержание файла будет загружено в память. Вы корректны в предположении, что использование буфера является соответствующим подходом, чтобы гарантировать, что только подмножество данных файла загружается в память в любой момент времени.
Это действительно зависит от Вашей методологии. Если Вы используете поток в качестве временной конечной точки с ReadToEnd()
, можно загрузить весь файл в памяти. Если вместо этого, Вы буферизуете, то Вы не будете использовать больше, чем немного служебное по размеру буфера.