我正在尝试使用Filestream在Xamarin.IOS中创建一个空的PDF文件。当我尝试使用以下代码创建Filestream时:
FileStream fs = new FileStream("InvestmentAgreemen.pdf", FileMode.Create, FileAccess.ReadWrite);
我收到以下错误:"访问路径" /private/var/containers/Bundle/Application/05AA1616-B66B-483D-8BA1-80A2B1AEC973/NewEPA.app/InvestmentAgreemen.pdf 34;被拒绝。"
在iPad模拟器上运行时效果很好,但是一旦我将它移动到真实设备,我就得到了这个权限错误。另外,我必须使用文件流来创建空PDF,因为我也使用Syncfusion的xamarin.IOS PDF工具,需要使用Filestream进行保存。 我还尝试创建一个FileIOPermission对象,向AllFiles授予AllAccess但我得到了一个系统不允许的错误。 如何解决此权限错误?
答案 0 :(得分:6)
您正尝试在应用程序包的根目录中创建一个只读文件。我很惊讶这也没有在模拟器上失败。
要在运行时创建文件,您需要指定user writable path
var documents =
Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "InvestmentAgreemen.pdf");
答案 1 :(得分:1)
在应用程序的可写目录中创建pdf
而不是捆绑包的根目录:
using (var docPath = NSFileManager.DefaultManager.GetUrl(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomain.All, null, true, out var nsError))
using (var fileStream = new FileStream(Path.Combine(docPath.Path, "InvestmentAgreemen.pdf"), FileMode.Create, FileAccess.ReadWrite))
{
// do something with the file stream
}
答案 2 :(得分:1)
我创建了一个样本,用于在Xamarin.IOS平台中创建和保存PDF文档。哪个可以从以下位置下载: http://www.syncfusion.com/downloads/support/directtrac/184238/ze/PDFSave1731207096
请尝试样本,并告诉我问题是否已解决。
此致 苏里亚库马尔