Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#找不到部分文件路径_C#_Xamarin_Xamarin.ios - Fatal编程技术网

C#找不到部分文件路径

C#找不到部分文件路径,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我正在使用Xamarin.IOS创建一个生成pdf文件的应用程序。我想在生成的每个文件中添加几个页面。为了实现这一点,我将名为MyDocs的文件夹添加到我的项目中,并将File.pdf放入其中。我还向MyDocs中添加了一个名为FileGet的类,该类有一个名为GetFile的静态方法,该方法将流返回到File.pdf GetFile的实现方式如下: using System.IO; ... return new FileStream(Path.Combine("MyDocs", "File.

我正在使用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
*/
我这样称呼这个方法:

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文件的正确方法吗?

首先确保您的文件具有
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");

@zambonee的可能副本它没有将构建操作设置为BundleResource是我还没有做的事情,但是这样做并使用NSBundle.MainBundle.BundlePath只会在我的应用程序中给我一个稍微不同的路径DirectoryNotFoundException@jarjar27仔细检查目录(和文件名)的大小写,文件系统区分大小写)我可以向你保证这不是问题所在。你能看一下错误报告中给出的路径,看看我是否遗漏了什么吗?@jarjar27你没有在Xamarin Live上运行它,是吗?@jarjar27你不应该也这样做,这可能是因为文件最初没有标记为BundleResource,而msbuild没有看到更改(?)。。。但当对Xamarin/msbuild有疑问时,请手动删除并重试;-)