2011-07-18 7 views
5

Jaka jest różnica między File.WriteAllBytes i FileStream.Write/WriteBytes? Mam obiekt bitmapowy i chcę utworzyć nowy plik bmp/​​jpg/png na dysku. Chyba czytałem gdzieś, że WriteAllBytes używa FileStream.Write poniżej?File.WriteAllBytes lub FileStream.Write

Odpowiedz

15

WriteAllBytes to tylko wygodna metoda, która owija podstawowe operacje Stream. (Utwórz plik, napisz do strumienia, zamknij strumień, itp.). Użyj go, jeśli odpowiada Twoim potrzebom. Jeśli potrzebujesz większej kontroli nad operacjami podstawowymi, zastanów się, czy nie użyć opcji Stream lub podobnej.

Wszystko polega na użyciu odpowiedniej abstrakcji do wykonania zadania.

+1

FYI: @driis jest prawidłowy, poniżej rzeczywisty kod wykorzystywany przez Framework (głównej gałęzi) https://github.com/dotnet/corefx/blob/master/src/System.IO. FileSystem/src/System/IO/File.cs # L462 – Damian

3

Użyj WriteAllBytes, aby zapisać wszystkie bajty, użyj Write, jeśli chcesz oglądać postępy.

2

Jesteś na niewłaściwym torze. Zapis obiektu bitmapowego wymaga Image.Save(). Jest to metoda, która wie, jak używać enkodera obrazu do konwersji bitmapy na bajty, które może załadować inny program (lub twój). Istnieje kilka enkoderów obrazu, możesz wybrać ten, który chcesz, za pomocą funkcji Save(), która pozwala wybrać ImageFormat. Format BMP jest rodzimym formatem Windows, jest nieskompresowany. Format PNG jest miły, jest to skompresowany format bezstratny. Format JPEG to skompresowany format stratny, dobry do zdjęć. Rozmiar pliku jest duży lub mały.

2

Powinieneś użyć WriteAllBytes, jeśli chcesz zapisać bitmapę.

Powiązane problemy