【问题标题】:How to access files in your assets folder from a deployed HoloLens app?如何从部署的 HoloLens 应用访问资产文件夹中的文件?
【发布时间】:2019-04-24 08:05:34
【问题描述】:

所以我有几个文件需要在我的应用程序中使用。两者都是 NLP 相关的 .nbin 文件。 我将它们直接存储在我的资产文件夹中,而不使用其中的任何子目录。 (.../Assets/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 Device Portal 上传文件,我应该将这些文件放在哪里?我如何访问它们?需要指定任何新的路径吗?

感谢您的宝贵时间。!

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

  1. 要使用 Assets 文件夹,给出的答案可以正常工作。

【问题讨论】:

    标签: deployment assets hololens


    【解决方案1】:

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

    【讨论】:

    • 有什么方法可以处理其他类型的文件(比如 .mp4 或 .jpg)?
    • 您也可以使用StreamingAssets。特别是对于像您的情况这样的非 Unity 文件,这似乎更容易。资源适用于所有类型的资产,例如测试、图像、音频。
    • 谢谢你们俩。多亏了您的两个建议,我的项目现在完成了。
    猜你喜欢
    • 2012-05-13
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多