C# 如何在c中将二进制文件转换为字节并作为文件写入#

C# 如何在c中将二进制文件转换为字节并作为文件写入#,c#,.net,C#,.net,我正在尝试从数据库中读取二进制文件,并使用c#作为文件写入本地磁盘 使用下面的代码。。。 但这一行有问题:byte[]fileAsByte=byte.Parse(行[“Blob]”) byte.Parse将尝试分析单个字节。你试过直接铸造吗 byte[] fileAsByte = (byte[]) row["Blob"]; 如果失败,它至少应该显示数据行中的实际类型。如果您的列是varbinary(max)类型,则可以在SqlDataReader上使用GetSqlBytes或GetSqlBin

我正在尝试从数据库中读取二进制文件,并使用c#作为文件写入本地磁盘

使用下面的代码。。。 但这一行有问题:
byte[]fileAsByte=byte.Parse(行[“Blob]”)


byte.Parse
将尝试分析单个字节。你试过直接铸造吗

byte[] fileAsByte = (byte[]) row["Blob"];

如果失败,它至少应该显示
数据行中的实际类型。如果您的列是varbinary(max)类型,则可以在SqlDataReader上使用GetSqlBytes或GetSqlBinary。如果列的类型为varchar(max)或nvarchar(max),请在SqlDataReader上使用GetSqlChars。您也可以使用GetBytes{这需要数组缓冲区的大小}或GetSqlBytes

另外,正如上面所建议的,对于varbinary(MAX),下面的行也应该起作用

byte[] binaryData = (byte[])row["Blob"];

希望这有帮助。

发生了什么事?乍一看,唯一的问题似乎是文件名,它将具有行值:“row[“BlobId”].ToString()”。到底是什么“问题”?我可能,猜。。。但是你有例外吗?如果是这样,请发布整个异常消息。你给我们的信息越多,你可能得到的实际帮助就越多。我会做一个“类型安全转换”:
byte[]fileAsByte=(row[“Blob”])作为byte(至少在.NET3.5,VS2008中)@corlettk:我不会的。如果转换失败,我希望它抛出一个异常,假设这是应该始终存在的必需数据。只有当转换失败时才有效使用
作为
。@corlettk:如果您认为
(字节[])数据
不安全,但
作为字节[]
的数据是安全的,那么您就错了。NET是类型安全的,无论您使用何种语法。唯一的区别是,如果
数据
不是
字节[]
类型,第一个将抛出异常,但第二个将返回一个
引用。/Hemant:谢谢你们两位清除了这个问题。。。卑微的派。。。苦笑。
byte[] binaryData = (byte[])row["Blob"];