UWP c# 在 ApplicationData.Current.LocalFolder 中创建文件返回 null

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

我创建了一个应用程序,需要将用户数据存储在应用程序启动时创建的文件中,当我编译它时,它向我显示此System.IO.FileLoadException:无法找到或加载特定文件。 (HRESULT 异常:0x80131621) 以及这个 System.NullReferenceException:无效指针

当应用程序启动时,它会在执行所有操作之前调用

Init()
方法。

    public static class FilesManager
    {

        public static StorageFolder ROOT_DIRECTORY, USER_DIRECTORY;
        public static StorageFile FILES_MANAGER_CACHE_FILE;

        public static volatile string FILES_MANAGER_CACHE;
        public static volatile StorageFolder FOLDER;

        public static async Task Init()
        {
            try
            {
                FOLDER = await ApplicationData.Current.LocalFolder.CreateFolderAsync("DashData", CreationCollisionOption.OpenIfExists);
                FOLDER = await ApplicationData.Current.LocalFolder.GetFolderAsync("DashData");
                if (FOLDER == null) Debug.WriteLine("FOLDER IS NULL.");
                FILES_MANAGER_CACHE_FILE = await FOLDER.CreateFileAsync("filesmanageruserdata.json", CreationCollisionOption.OpenIfExists);
                FILES_MANAGER_CACHE_FILE = await FOLDER.GetFileAsync("filesmanageruserdata.json");
                await LoadFilesManagerCacheAsync();
                
                Debug.WriteLine("TEXT: " + FILES_MANAGER_CACHE);
            }
            catch(Exception e)
            {
                Debug.WriteLine("ERROR: " + e.ToString());
            }
        }

        public static async Task LoadFilesManagerCacheAsync()
        {
            FILES_MANAGER_CACHE = await FileIO.ReadTextAsync(FILES_MANAGER_CACHE_FILE); 
        }
        
        public static async Task storeUserData(string content)
        {
            try
            {
                await FileIO.WriteTextAsync(FILES_MANAGER_CACHE_FILE, content);
            }catch(Exception e)
            {
                Debug.WriteLine("ERROR: " + e.ToString());
            }
        }

    }
c# windows file xaml uwp
1个回答
0
投票

我尝试了不同的解决方案,但没有一个有效,虽然它与调用

await FilesManager.Init();
及其实现或其他任何东西无关,我只是切换到 WinUI 3 Unpackaged App,据我所知,它比 UWP 更好,好事没有'在执行异步操作和读/写数据时没有发现任何真正的问题。我只发现了一些与应用程序启动时间相关的小问题(我认为这将在 WinUI 的后续版本中得到修复),无论如何我建议切换到它(它包含与 UWP 相同的功能等等,而且它也运行在 dotnet core 上)因此该应用程序可以独立于 dotnet 运行时的安装)

© www.soinside.com 2019 - 2024. All rights reserved.