字符串到 zip 文件
String to zip file
我使用的网络服务 returns 一个 zip 文件,作为一个字符串,而不是我预期的字节。我试图将它写入磁盘,但当我打开它时,它告诉我它已损坏。我做错了什么?
string cCsv = oResponse.fileCSV;//this is the result from webservice
MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(cCsv));
using (FileStream file = new FileStream("test.zip", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(file);
}
ms.Close();
我不确定字符串的编码类型,但假设 UTF-8, the following should work. UTF-16 是另一种猜测。
string cCsv = oResponse.fileCSV;
using (BinaryWriter bw = new BinaryWriter(File.Create("test.zip")))
{
bw.Write(System.Text.Encoding.UTF8.GetBytes(cCsv));
}
查看返回的字符和原始字符串本身会提供很多信息。
编辑
根据 Frank 的回答,正确的编码是 base64,这当然是有道理的,因为它是存储为字符串的二进制数据。
此外,根据 Frank 的回答,如果唯一的操作是直接写入单个字节数组,那么 File.WriteAllBytes
更紧凑。
好的,我解决问题了:
File.WriteAllBytes("testbase64.zip", Convert.FromBase64String(cCsv));
我使用的网络服务 returns 一个 zip 文件,作为一个字符串,而不是我预期的字节。我试图将它写入磁盘,但当我打开它时,它告诉我它已损坏。我做错了什么?
string cCsv = oResponse.fileCSV;//this is the result from webservice
MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(cCsv));
using (FileStream file = new FileStream("test.zip", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(file);
}
ms.Close();
我不确定字符串的编码类型,但假设 UTF-8, the following should work. UTF-16 是另一种猜测。
string cCsv = oResponse.fileCSV;
using (BinaryWriter bw = new BinaryWriter(File.Create("test.zip")))
{
bw.Write(System.Text.Encoding.UTF8.GetBytes(cCsv));
}
查看返回的字符和原始字符串本身会提供很多信息。
编辑
根据 Frank 的回答,正确的编码是 base64,这当然是有道理的,因为它是存储为字符串的二进制数据。
此外,根据 Frank 的回答,如果唯一的操作是直接写入单个字节数组,那么 File.WriteAllBytes
更紧凑。
好的,我解决问题了:
File.WriteAllBytes("testbase64.zip", Convert.FromBase64String(cCsv));