Как получить доступ к файлам в папке с активами из развернутого приложения HoloLens? - PullRequest
2 голосов
/ 24 апреля 2019

Итак, у меня есть пара файлов, которые мне нужно использовать в моем приложении. Оба являются NLP-файлами .nbin. Я сохранил их прямо в папке с активами, не используя в ней никаких подкаталогов. (... / Активы / EnglishTOK.nbin)

Теперь я использую Application.DataPath, чтобы получить доступ к папке ресурсов без указания абсолютного пути на моем ПК (Работает). Но после того, как я развернул его на HoloLens, я получаю следующую ошибку.

FileNotFoundException C: \ Data \ Users \ DefaultAccount \ AppData \ Local \ DevelopmentFiles \ Template3DVS.Release_Win32.Dinesh \ Data \ EnglishTok.nbin

и приведенный выше путь показан. Будучи новичком, я не могу решить проблему.

1) Как получить доступ к этим файлам?

2) Если этот процесс некорректен, есть ли другой способ включить файлы в мое приложение? (Не создание новых, а использование существующих)

3) Если я загружу файлы с портала устройств Windows, где мне разместить эти файлы? Как я могу получить к ним доступ? Нужно ли указывать какие-либо новые пути?

Спасибо за ваше время.!

Редактировать: 1. Чтобы использовать видео / аудио / файлы изображений на вашем устройстве, используйте папку Assets / StreamingAssets для размещения этих файлов. Используйте Application.streamingAssetsPath, чтобы получить путь к этой папке.

  1. Чтобы использовать папку «Активы», данный ответ работает нормально.

1 Ответ

3 голосов
/ 24 апреля 2019

Вы захотите создать папку с именем Resources в вашей папке Assets и поместить туда свои файлы.Затем вы загружаете свой файл, используя что-то вроде:

TextAsset asset = Resources.Load("myfile.bytes"); 

Вы можете изменить расширение файла на расширение, распознаваемое Unity, например, «.bytes» или «.txt», чтобы избежать проблем с сериализацией.Для получения дополнительной информации о загрузке ресурсов см. https://docs.unity3d.com/560/Documentation/Manual/LoadingResourcesatRuntime.html

. В последнем вопросе вы можете получить доступ к файлам на портале устройств Windows, но затем их следует поместить в папки пользователя \ LocalAppData \ your-app \ LocalState \.

Затем их можно получить, загрузив содержимое в виде потока файлов:

filename = "yourfile.bytes";
string streamstring = null;
if (File.Exists(Application.persistentDataPath + "/" + filename))
{
    FileStream fs = new FileStream(Application.persistentDataPath + "/" + filename, FileMode.Open);
    byte [] bytes = new byte [fs.Length];
    fs.Read(bytes, 0, (int) fs.Length);
    streamstring = Encoding.UTF8.GetString(bytes);
    fs.Dispose();
}
...