繁体   English   中英

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

[英]How to access files in your assets folder from a deployed HoloLens app?

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

现在,我正在使用Application.DataPath来访问资产文件夹,而无需在PC上指定绝对路径(工作)。 但是在将其部署到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. 要使用Assets文件夹,给出的答案很好用。

您将要在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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM