如何将XML-Mind FO转换器输出存入变量而非物理文件?
解决方案:使用MemoryStream直接将RTF内容存入变量
当然可以用MemoryStream实现这个需求!你提到的SetOutput()方法支持Stream类型的参数,这正好能满足你不生成物理文件、直接在内存中处理转换结果的场景,完全不需要先存文件再回读,非常适合你说的那些无法保存物理文件的场景。
具体实现代码
这里是修改后的完整示例,用MemoryStream接收转换后的RTF内容,再读取到变量中:
string foFilePath = @"D:\Temp\test.fo"; Converter converter = new Converter(); converter.OutputFormat = OutputFormat.Rtf; converter.OutputEncoding = "windows-1252"; converter.ImageResolution = 120; converter.SetInput(foFilePath); // 使用MemoryStream在内存中接收输出结果 using (MemoryStream ms = new MemoryStream()) { converter.SetOutput(ms); converter.Convert(); // 转换完成后,务必将流的位置重置到起始处,否则读取会从末尾开始 ms.Position = 0; // 根据你设置的编码,将流内容读取到字符串变量中 string rtfContent = new StreamReader(ms, Encoding.GetEncoding("windows-1252")).ReadToEnd(); // 现在你可以直接在应用内处理rtfContent变量了,比如展示、编辑或者传输 // 示例:输出到控制台(仅作测试用) Console.WriteLine(rtfContent); }
额外说明
- 如果你的场景需要二进制形式的RTF内容(比如要写入数据库或者通过网络传输),可以直接把
MemoryStream转成字节数组:byte[] rtfBytes = ms.ToArray(); - 注意
using语句的使用,它会自动帮你释放MemoryStream的资源,避免内存泄漏。 - 一定要保证读取流之前重置
Position为0,不然StreamReader会从流的末尾开始读,得到空内容。
这个方案完全利用了转换器提供的Stream重载能力,是最直接高效的实现方式,完美避开了物理文件的依赖。
内容的提问来源于stack exchange,提问作者techdev
相关产品推荐
相关产品推荐

