我无法弄清楚如何在StreamWriter之间切换以写出文本和FileStream将byte []转储到文件中。
我使用StreamWriter手动在文本中写出XML(我有理由不使用XMLWriter)。在两个部分中,需要将byte []数组转储到文件中(TIF图像)。我知道是否能以某种方式完成,因为我试图模仿我们从供应商处获得的文件。我试图使用StreamWriter并使用ISO-8859-1将byte []转换为字符串,但还有一些额外的字符使它成为无效的TIF。
我是否过度思考这个?我是否需要关闭StreamWriter,重新打开文件并使用FileStream追加,关闭并重新打开StreamWriter以写入其他文本?
编辑:好的,这几乎可以。二进制部分现在很好,但是每个字符之间的所有文本部分都有0x00。
using (System.IO.FileStream fileST = new System.IO.FileStream(filenameST, FileMode.Create, FileAccess.Write))
{
string z;
fileST.Write(Encoding.Unicode.GetBytes(z =""), 0, z.Length);
fileST.Write(Encoding.Unicode.GetBytes(z =partID), 0, z.Length);
fileST.Write(Encoding.Unicode.GetBytes(z ="Content-Type: text/xml; charset=UTF-8"), 0, z.Length);
fileST.Write(Encoding.Unicode.GetBytes(z ="Content-Transfer-Encoding: binary"), 0, z.Length);
fileST.Write(Encoding.Unicode.GetBytes(z ="Content-Id: <" + contentID + ">"), 0, z.Length);
fileST.Write(Encoding.Unicode.GetBytes(z =""), 0, z.Length);
//truncated
fileST.Write(Encoding.Unicode.GetBytes(z =imagekey + "00FBW"), 0, z.Length);// + System.Convert.ToBase64String(Miscellaneous.MiscTools.GEncheckImageFront(outputPath, font)), 0, z.Length);
fileST.Write(aFrontImage, 0, aFrontImage.Length);
}
其中aFrontImage是tif文件的byte []。
原始代码是:
using (System.IO.StreamWriter fileST = new System.IO.StreamWriter(filenameST))
{
string partID = "------=_Part_" + partline1 + "_" + partline2 + ".0" + XMLdata[i, 0].GetLast(4) + XMLdata[i, 3].GetLast(5) + "321";
string contentID = Guid.NewGuid().ToString().Replace("-", "").ToUpper();
fileST.WriteLine("");
fileST.WriteLine(partID);
fileST.WriteLine("Content-Type: text/xml; charset=UTF-8");
fileST.WriteLine("Content-Transfer-Encoding: binary");
fileST.WriteLine("Content-Id: <" + contentID + ">");
fileST.WriteLine("");
答案 0 :(得分:1)
只需转换字符串并将所有字节写入文件即可。根据您的编码,您可以执行以下操作:
Bar