【发布时间】:2011-07-18 21:48:58
【问题描述】:
File.WriteAllBytes 和 FileStream.Write/WriteBytes 有什么区别?我有一个位图对象,我想在磁盘上创建一个新的 bmp/jpg/png。我想我在某处读到 WriteAllBytes 在下面使用 FileStream.Write?
【问题讨论】:
标签: c# stream filestream
File.WriteAllBytes 和 FileStream.Write/WriteBytes 有什么区别?我有一个位图对象,我想在磁盘上创建一个新的 bmp/jpg/png。我想我在某处读到 WriteAllBytes 在下面使用 FileStream.Write?
【问题讨论】:
标签: c# stream filestream
WriteAllBytes 只是一种方便的方法,它包装了底层的Stream 操作。 (创建文件、写入流、关闭流等)。如果它适合您的需求,请使用它。如果您需要对底层操作进行更多控制,请回退到使用 Stream 或类似名称。
一切都是为了对任务使用正确的抽象。
【讨论】:
使用 WriteAllBytes 只保存所有字节,如果需要查看进度,请使用 Write。
【讨论】:
你在这个错误的轨道上。保存位图对象需要 Image.Save()。这是一种知道如何使用图像编码器将位图转换为另一个程序(或您的程序)可以加载回的字节的方法。有几种图像编码器,您可以使用 Save() 重载选择您想要的一种,让您选择 ImageFormat。 BMP 格式是原生的 Windows 格式,它是未压缩的。 PNG格式很好,它是一种压缩的无损格式。 JPEG 格式是一种压缩的有损格式,适用于照片。文件大小按从大到小的顺序排列。
【讨论】:
如果你想保存位图,你应该使用 WriteAllBytes。
【讨论】: