我在我的应用中遇到问题,它从磁盘读取PDF,然后必须稍后将其写回到其他位置。
发出的文件不再是有效的PDF。
以非常简化的形式,我尝试使用
进行读/写var bytes = File.ReadAllBytes(@"c:\myfile.pdf");
File.WriteAllBytes(@"c:\output.pdf", bytes);
和
var input = new StreamReader(@"c:\myfile.pdf").ReadToEnd();
File.WriteAllText("c:\output.pdf", input);
...并且指定了上述的100种排列,并且指定了各种编码。没有输出文件是有效的PDF文件。
有人可以伸出援助之手吗?非常感谢!!
答案 0 :(得分:3)
在C#/。Net 4.0中:
using (var i = new FileStream(@"input.pdf", FileMode.Open, FileAccess.Read))
using (var o = File.Create(@"output.pdf"))
i.CopyTo(o);
如果您坚持首先使用byte[]
:
using (var i = new FileStream(@"input.pdf", FileMode.Open, FileAccess.Read))
using (var ms = new MemoryStream())
{
i.CopyTo(ms);
byte[] rawdata = ms.GetBuffer();
using (var o = File.Create(@"output.pdf"))
ms.CopyTo(o);
}
在第二个CopyTo之前,内存流可能需要ms.Seek(0, SeekOrigin.Origin)
或类似的东西。查一查,或尝试一下
答案 1 :(得分:3)
您正在使用File.WriteAllText
来编写文件。