我是一名有用的助手,可以为您翻译以下内容:
我有一个流,其中包含几个\0
。我必须替换这个流的文本部分,但当我这样做时
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
text
只包含流的开头(因为有 \0
字符)。所以
text = text.Replace(search, replace);
StreamWriter writer = new StreamWriter(stream);
writer.Write(text);
由于我没有解析“完整”的流,所以无法执行预期的工作。有没有办法获取完整数据并替换某些文本部分?
编辑:以下是在记事本中看到的示例。
stream
H‰—[oã6…ÿÛe)Rêq%ÙrlËñE±“-úàÝE[,’íKÿþŽDjxÉ6ŒÅ"XkÏáGqF að÷óð!SN>¿¿‰È†/$ËÙpñ<^HVÀHuñ'¹¿à»U?`äŸ?
¾fØø(Ç,ükøéàâ+ùõ7øø2ÜTJ«¶Ïäd×SÿgªŸF_ß8ÜU@<Q¨|œp6åâ-ªÕ]³®7Ûn¹ÚÝ|‰,¨¹^ãI©…Ë<UIÐI‡Û©* Ǽ,,ý¬5O->qä›Ü
endstream
endobj
8 0 obj
<<
/Type /FontDescriptor
/FontName /Verdana
/Ascent 765
/Descent -207
/CapHeight 1489
/Flags 32
/ItalicAngle 0
/StemV 86
/StemH 0
/FontBBox [ -560 -303 1523 1051 ]
/FontFile2 31 0 R
>>
endobj
9 0 obj
我希望你能帮助我实时地将/FontName /Verdana
替换为/FontName /Arial
,例如。
ReadToEnd
并不使用\0
作为“流结束”字符。但是它可能会影响您的诊断。尝试打印长度。这些数据来自哪里?它们是否真的应该包含这些字符?您是否可能只是使用了错误的编码方式? - Jon SkeetReadToEnd()
没有给我完整的文件文本。这个文件是一个包含stream ... endstream
部分的PDF文件。 - Nicolas Voron