Нет, потому что, в то время как Вы думали, LINQ является действительно просто синтаксическим сахаром, он на самом деле в большой степени использовал деревья выражений - функция, отсутствующая в.NET 2.0.
, Что быть упомянутой.NET 3.5 только растет сверху.NET 2.0, и это - причина, почему IL не выглядит "отличающимся" или "особенным".
я не вижу оснований, почему Вы не должны только устанавливать.NET 3.5 Платформы. Все.NET 2.0 будет хорошо работать на нем, обещание:)
(edit: обратите внимание, что вопрос изменился; он не упоминал байт []
изначально; см. редакция 1 )
Ну, На ум приходит File.Copy
; но в остальном это звучит как сценарий Stream
:
using (Stream source = File.OpenRead(inPath))
using (Stream dest = File.Create(outPath)) {
byte[] buffer = new byte[2048]; // pick size
int bytesRead;
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
dest.Write(buffer, 0, bytesRead);
}
}
Знаете ли вы о TextReader и TextWriter и их потомки StreamReader и StreamWriter ? Я думаю, это решит вашу проблему, потому что они обрабатывают кодировки, BinaryReader не знает ни кодировок, ни даже текста, он занимается только байтами.
Вам нужен небуферизованный вывод всякий раз, когда вы хотите убедиться, что вывод был записан, прежде чем продолжить. Одним из примеров является стандартная ошибка библиотеки времени выполнения C - обычно она не буферизуется по умолчанию. Поскольку ошибки (будем надеяться) нечасты, вы захотите узнать о них немедленно. С другой стороны, стандартный вывод буферизуется просто потому, что предполагается, что через него будет проходить гораздо больше данных.
Другой пример - библиотека регистрации. Если ваши сообщения журнала хранятся в буферах вашего процесса, и ваш процесс выгружает ядро, есть очень большая вероятность, что вывод никогда не будет записан.
Кроме того, минимизируются не только системные вызовы, но и дисковый ввод-вывод как хорошо. Скажем, программа читает файл по одному байту за раз. С небуферизованным вводом,