C # Не удается найти часть пути к файлу - PullRequest
0 голосов
/ 20 мая 2018

Я использую 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".

Какой правильный способ доступа к File.pdf в моей папке MyDocs?или это не правильный способ хранения PDF-файла в приложении?

1 Ответ

0 голосов
/ 20 мая 2018

Сначала убедитесь, что ваши файлы имеют Действие сборки из 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...