我有一个用流初始化的对象,现在我想将此流保存到磁盘(流可能是 or 或 )。StreamReader
.gif
.jpg
.pdf
现有代码:
StreamReader sr = new StreamReader(myOtherObject.InputStream);
我也有编码类型,如果我将其存储到 SQL Server,我将需要它,对吗?
网友回答:
您不得用于二进制文件(如 gif 或 jpg)。 用于文本数据。如果您将其用于任意二进制数据,您几乎肯定会丢失数据。(如果你使用Encoding.GetEncoding(28591),你可能没问题,但有什么意义呢?)StreamReader
StreamReader
为什么需要使用?为什么不将二进制数据保留为二进制数据并将其作为二进制数据写回磁盘(或SQL)?StreamReader
编辑:因为这似乎是人们希望看到的…如果您只想将一个流复制到另一个流(例如,复制到文件),请使用如下内容:
/// <summary>
/// Copies the contents of input to output. Doesn't close either stream.
/// </summary>
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8 * 1024];
int len;
while ( (len = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, len);
}
}
要使用它将流转储到文件,例如:
using (Stream file = File.Create(filename))
{
CopyStream(input, file);
}
请注意,这是在 .NET 4 中引入的,用途基本相同。Stream.CopyTo
网友回答:
正如 Tilendor 在 Jon Skeet 的回答中所强调的那样,流自 .NET 4 以来就有了方法。CopyTo
var fileStream = File.Create("C:\Path\To\File");
myOtherObject.InputStream.Seek(0, SeekOrigin.Begin);
myOtherObject.InputStream.CopyTo(fileStream);
fileStream.Close();
或者使用语法:using
using (var fileStream = File.Create("C:\Path\To\File"))
{
myOtherObject.InputStream.Seek(0, SeekOrigin.Begin);
myOtherObject.InputStream.CopyTo(fileStream);
}
如果您还没有开始,则必须调用,否则您将无法复制整个流。Seek
网友回答:
public void CopyStream(Stream stream, string destPath)
{
using (var fileStream = new FileStream(destPath, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
}
模板简介:该模板名称为【如何在 C# 中将流保存到文件?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。