我使用Xamarin.IOS创建一个生成pdf文件的应用程序。我想要将几个页面添加到生成的每个文件中。为实现这一目标,我已将名为MyDocs的文件夹添加到我的项目中,并将File.pdf放入其中。我还在MyDocs中添加了一个名为FileGet的类,它有一个名为GetFile的静态方法,它将一个流返回给File.pdf。
GetFile的实现方式如下:
using System.IO;
...
return new FileStream(Path.Combine("MyDocs", "File.pdf"), FileMode.Open, FileAccess.Read);
我按这样调用方法:
using MyApp.MyDocs;
using System.IO;
/*
code to generate the user's pdf document
*/
FileStream stream = FileGet.GetFile();
/*
code to append documents
*/
但是得到了
System.IO.DirectoryNotFound: Could not find a part of the path "/private/var/containers/Bundle/Application/1B01EF3D-CA49-47F9-9CBB-30EE10AEE6A1/MyApp.app/MyDocs/File.pdf".
在我的MyDocs文件夹中访问File.pdf的正确方法是什么? 或者这不是在应用程序中存储pdf文件的正确方法吗?
答案 0 :(得分:1)
首先确保您的文件具有 BundleResource
|- MyDocs
| |- SomeBundledFile.png (Build Action = BundleResource)
因此,假设您的Xamarin.iOS
项目中的文件属于上述结构,您可以使用NSBundle.MainBundle.BundlePath
获取根路径,然后添加其余部分:
var path = Path.Combine(NSBundle.MainBundle.BundlePath, "MyDocs", "SomeBundledFile.png");
using (var stream = new FileStream(path, FileMode.Open))
{
Console.WriteLine(stream.Length);
}
还有一些类具有静态初始化程序,它们考虑了捆绑资源:
var image = UIImage.FromBundle("MyDocs/SomeBundleFile.png");