如何从部署的HoloLens应用程序访问资产文件夹中的文件?

问题描述 投票:2回答:1

所以我需要在我的应用程序中使用几个文件。两者都是NLP相关的.nbin文件。我将它们直接存储在我的资源文件夹中,而不使用其中的任何子目录。 (... /资产/ EnglishTOK.nbin)

现在我正在使用Application.DataPath来访问assets文件夹而不指定我的PC上的绝对路径(工作)。但是在我将它部署到HoloLens之后,我收到了以下错误。

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

并显示上述路径。作为初学者,我无法调试问题。

1)我如何获得对这些文件的访问权限?

2)如果此过程不正确,有没有其他方法可以在我的应用程序中包含文件? (不创建新的但使用现有的)

3)如果我从Windows Device Portal上传文件,我应该在哪里放置这些文件?我如何访问它们?需要指定任何新路径吗?

谢谢你的时间。!

编辑:1。要在设备中使用视频/音频/图像文件,请使用Assets / StreamingAssets文件夹放置这些文件。使用Application.streamingAssetsPath获取该文件夹的路径。

  1. 要使用Assets文件夹,给出的答案可以正常工作。
deployment assets hololens
1个回答
3
投票

您需要在Assets文件夹中创建名为Resources的文件夹,并将文件放在那里。然后使用以下内容加载文件:

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.