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

Deployment 如何从已部署的HoloLens应用程序访问资产文件夹中的文件?,deployment,assets,hololens,Deployment,Assets,Hololens,所以我有几个文件需要在我的应用程序中使用。两者都是NLP相关的.nbin文件。 我直接将它们存储在我的资产文件夹中,而不使用其中的任何子目录。(…/Assets/EnglishTOK.nbin) 现在,我使用Application.DataPath访问assets文件夹,而无需指定PC上的绝对路径(工作)。 但在我把它部署到全息透镜上之后,我得到了以下错误 FileNotFoundException C:\Data\Users\DefaultAccount\AppData\Local\Devel

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

现在,我使用Application.DataPath访问assets文件夹,而无需指定PC上的绝对路径(工作)。 但在我把它部署到全息透镜上之后,我得到了以下错误

FileNotFoundException C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\Template3DVS.Release\u Win32.Dinesh\Data\EnglishTok.nbin

以上路径如图所示。作为一个初学者,我无法调试这个问题

1) 如何访问这些文件

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

3) 如果我确实从Windows设备门户上载文件,我应该将这些文件放在哪里?如何访问它们?是否需要指定任何新路径

谢谢你的时间

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

  • 要使用Assets文件夹,给出的答案很好

  • 您需要在资产文件夹中创建一个名为Resources的文件夹,并将文件放在其中。然后使用以下方法加载文件:

    TextAsset asset = Resources.Load("myfile.bytes"); 
    
    您可能希望将文件扩展名更改为Unity可以识别的扩展名,例如“.bytes”或“.txt”,以避免序列化问题。有关加载资源的更多信息,请参阅

    对于最后一个问题,您可以从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)?您也可以使用。特别是对于非统一文件,如您的情况,这看起来更容易。资源是首选的所有类型的资产,如测试,图像,音频。谢谢你们两个。多亏了你的两个建议,我的项目现在完成了。