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
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.
Użyj WriteAllBytes, aby zapisać wszystkie bajty, użyj Write, jeśli chcesz oglądać postępy.
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.
Powinieneś użyć WriteAllBytes, jeśli chcesz zapisać bitmapę.
- 1. File.WriteAllBytes powoduje „istnieją zasoby systemowe nie wystarczają do ukończenia żądanej usługi” błąd
- 2. File.OpenWrite dołącza zamiast wycierać zawartość?
- 3. Indy lub ICS lub?
- 4. MVC4 ViewBag lub ViewModel lub?
- 5. Seler lub beanstalkd lub oba?
- 6. Wiosna lub CDI lub EJB3
- 7. MVC lub Reszta lub Oba
- 8. setTimeout lub setInterval lub requestAnimationFrame
- 9. Zastąp kopię lub copyWithZone: lub obie?
- 10. Clone lub Kopiuj UIViewController lub UIView
- 11. Zabezpieczanie UDP - OpenSSL lub GnuTls lub ...?
- 12. Powiadomienia push lub Socket.io ?, lub oba?
- 13. nodeJS-Express lub Meteor lub Derby
- 14. Redis "nil" lub "pusta lista lub zestaw"
- 15. Porównanie UIColors lub CGColor lub CGColorSpace
- 16. Czego używać? MVC, MVP lub MVVM lub ...?
- 17. Klient HTTP Erlang: inets lub ibrowse lub ...?
- 18. Lucene.NET "LUB"
- 19. Zablokuj obraz (lub obraz) lub Pobierz obraz (lub obraz) z programu Excel za pomocą programu EPPlus
- 20. Telegram Bot Jak usunąć lub usunąć wiadomość lub nośnika z kanału lub grupy
- 21. Dash (lub minus lub odejmowanie), a następnie pismem (lub nazwa funkcji) powodując błąd składni w Perlu
- 22. Źródło lub biblioteki do wdrożenia marketplace lub sklepu z aplikacjami
- 23. Wielowątkowe * Wyszukiwanie w języku Java lub Lisp lub C#
- 24. wyrażeniem regularnym dopasowującym dowolnych liter lub cyfr lub Dash
- 25. Sprawdź, czy funkcja lub metoda jest normalna lub asynchroniczna.
- 26. Błąd w kompilatorze lub nieporozumieniu? Lub operator na spodenkach
- 27. co powinienem użyć bloku try lub catch lub zdarzenia onerror
- 28. Dodać lub zmienić komentarz do tabeli lub kolumny MySQL?
- 29. Czy należy używać rozszerzeń SIMD lub wektorowych lub czegoś innego?
- 30. Usługa sieci Web: PHP lub Ruby on Rails lub Python?
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