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

pwuypxnk  于 2023-09-28  发布在  C#
关注(0)|答案(1)|浏览(137)

我创建了一个应用程序,它需要将用户数据存储在应用程序启动时创建的文件中,当我编译它时,它向我显示以下 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());
            }
        }

    }
9udxz4iz

9udxz4iz1#

我尝试了不同的解决方案,但没有一个工作,虽然它与调用await FilesManager.Init();无关,也没有它的实现或其他任何东西,我只是切换到WinUI 3未打包的应用程序,它比UWP更好,因为我知道,好事情没有发现任何真实的的问题做异步的东西和阅读/写数据。我只发现了一些与应用程序启动时间相关的小问题(我认为这将在WinUI的后续版本中得到修复),无论如何,我建议切换到它(它包含UWP的相同功能以及更多功能,它也运行在dotnet核心上,因此应用程序可以独立于dotnet运行时的安装)

相关问题