在.NET MAUI中复制PDF资源到AppData时文件损坏问题排查
PDF文件复制后损坏的解决方法
你代码里的问题出在误用了StreamReader和StreamWriter处理PDF文件——这两个类是专门用来读写文本文件的,而PDF属于二进制格式,用文本方式读写会篡改二进制数据的原始结构,最终导致文件损坏。
正确的做法是直接对二进制流进行复制,不用转换成文本格式,使用Stream.CopyToAsync方法就能安全高效地完成文件复制:
using var stream = await FileSystem.OpenAppPackageFileAsync("CBA2015.pdf"); if (stream != null) { string targetFile = Path.Combine(FileSystem.Current.AppDataDirectory, "CBA2015.pdf"); using var outputStream = File.OpenWrite(targetFile); await stream.CopyToAsync(outputStream); }
额外提醒两点:
- 无需引入文本读写类,直接操作原始二进制流即可保证数据完整性
CopyToAsync会自动处理所有字节的复制,比手动读写文本再写入的方式更稳定可靠
内容的提问来源于stack exchange,提问作者Scott Lohman
相关产品推荐
相关产品推荐

