流、字符串和空字符



我有一个流,其中包含几个。我必须替换这个流的文本部分,但当我执行时

StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();

text仅包含流的开头(因为字符)。所以

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 /Arial替换/FontName /Verdana

啊,现在我们开始了…

此文件为pdf

那么它就不是一个文本文件。这是一个二进制文件,应该将视为二进制文件。在其上使用StreamReader丢失数据。您需要使用不同的API来访问其中的数据-一个理解PDF格式的API。看看iTextSharp或PDFTron。

我无法复制您的结果。下面的代码创建一个包含的字符串,写入文件,然后读回。生成的字符串中包含

        string s = "hellox0world";
        File.WriteAllText("foo.txt", s);
        string t;
        using (var f = new StreamReader("foo.txt"))
        {
            t = f.ReadToEnd();
        }
        Console.WriteLine(t == s);  // prints "True"

如果我执行var t = File.ReadAllText("foo.txt"); ,我会得到相同的结果

相关内容

  • 没有找到相关文章

最新更新