2011-07-18 5 views
5

Sự khác nhau giữa File.WriteAllBytes và FileStream.Write/WriteBytes là gì? Tôi có một đối tượng bitmap và tôi muốn tạo một bmp/​​jpg/png mới trên đĩa. Tôi nghĩ rằng tôi đọc ở đâu đó mà WriteAllBytes sử dụng FileStream.Write bên dưới?File.WriteAllBytes hoặc FileStream.Write

Trả lời

15

WriteAllBytes chỉ là một phương pháp thuận tiện, kết thúc tốt các hoạt động cơ bản Stream. (Tạo một tệp, ghi vào luồng, đóng luồng, v.v.). Sử dụng nó nếu nó phù hợp với nhu cầu của bạn. Nếu bạn cần kiểm soát nhiều hơn đối với các hoạt động cơ bản, dự phòng sử dụng Stream hoặc tương tự.

Đó là tất cả về cách sử dụng trừu tượng phù hợp cho tác vụ.

+1

FYI: @driis là đúng, dưới đây là mã thực tế được sử dụng bởi .Net framework (chi nhánh chính) https://github.com/dotnet/corefx/blob/master/src/System.IO. FileSystem/src/Hệ thống/IO/File.cs # L462 – Damian

3

Sử dụng WriteAllBytes để lưu tất cả các byte, sử dụng Viết nếu bạn cần xem tiến độ.

2

Bạn đang đi sai đường với điều này. Lưu một đối tượng bitmap yêu cầu Image.Save(). Đó là phương pháp biết cách sử dụng bộ mã hóa hình ảnh để chuyển đổi bitmap thành các byte mà chương trình khác (hoặc của bạn) có thể tải lại. Có một số bộ mã hóa hình ảnh, bạn có thể chọn một trong những bạn muốn với quá tải Save() cho phép bạn chọn ImageFormat. Định dạng BMP là định dạng Windows gốc, nó không được nén. Các định dạng PNG là tốt đẹp, nó là một định dạng lossless nén. Định dạng JPEG là định dạng bị mất nén, phù hợp cho ảnh. Kích thước tệp lớn đến nhỏ theo thứ tự.

2

Bạn nên sử dụng WriteAllBytes nếu bạn muốn lưu bitmap.