File.WriteAllBytes или FileStream.Write - PullRequest
6 голосов
/ 19 июля 2011

В чем разница между File.WriteAllBytes и FileStream.Write / WriteBytes?У меня есть растровый объект, и я хочу создать новый диск BMP / JPG / PNG на диске.Я думаю, что где-то читал, что WriteAllBytes использует FileStream.Write внизу?

Ответы [ 4 ]

16 голосов
/ 19 июля 2011

WriteAllBytes - это просто метод удобства, который включает в себя базовые Stream операции.(Создать файл, записать в поток, закрыть поток и т. Д.).Используйте его, если он соответствует вашим потребностям.Если вам нужен больший контроль над базовыми операциями, вернитесь к использованию Stream или аналогичного.

Все дело в правильной абстракции для задачи.

3 голосов
/ 19 июля 2011

Используйте WriteAllBytes, чтобы просто сохранить все байты, используйте Write, если вам нужно наблюдать за прогрессом.

2 голосов
/ 21 октября 2011

Вы должны использовать WriteAllBytes, если хотите сохранить растровое изображение.

2 голосов
/ 19 июля 2011

Вы ошиблись с этим. Для сохранения растрового объекта требуется Image.Save (). Это метод, который знает, как использовать кодировщик изображений для преобразования растрового изображения в байты, которые может загрузить другая программа (или ваша). Существует несколько кодировщиков изображений, вы можете выбрать тот, который вам нужен, с перегрузкой Save (), которая позволяет выбрать ImageFormat. Формат BMP - это родной формат Windows, он не сжат. Формат PNG хорош, это сжатый формат без потерь. Формат JPEG - это сжатый формат с потерями, подходящий для фотографий. Размер файла от большого к маленькому по порядку.

...