使用Filestream创建新文件时拒绝访问 - Xamarin IOS

时间:2017-07-26 18:52:15

标签: c# xamarin xamarin.ios syncfusion

我正在尝试使用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但我得到了一个系统不允许的错误。 如何解决此权限错误?

3 个答案:

答案 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

请尝试样本,并告诉我问题是否已解决。

此致 苏里亚库马尔