【问题标题】:Windows Phone 8 file are not persisted across app restartWindows Phone 8 文件不会在应用重新启动后保留
【发布时间】:2014-12-19 15:51:34
【问题描述】:

我正在编写我的第一个 Windows Phone 8 应用程序,我只是在尝试一些简单的事情。读/写文件。这是我的两种方法:

public static async Task<Week> Load()
{
    StorageFolder folder = ApplicationData.Current.LocalFolder;
    try
    {
        StorageFile mealsFile = await folder.GetFileAsync("file.txt");

        if (mealsFile != null)
        {
            using (var stream = await mealsFile.OpenAsync(FileAccessMode.Read))
            {
                var serializer = new DataContractSerializer(typeof(List<MyTypeHere>));
                var w = (List<MyTypeHere>)serializer.ReadObject(stream.AsStreamForRead());
                if (w != null)
                    MyWeek.WeekList = new ObservableCollection<MyTypeHere>(w);
            }
        }
    }
    catch(FileNotFoundException fEx)
    {
        MyWeek = new Week();
    }

    return MyWeek;
}

public static async Task<bool> Save()
{
    try
    {
        StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile mealsFile = await folder.CreateFileAsync("file.txt", CreationCollisionOption.ReplaceExisting);
        using (var stream = await mealsFile.OpenAsync(FileAccessMode.ReadWrite))
        {
            using (var sw = stream.GetOutputStreamAt(0))
            {
                var serializer = new DataContractSerializer(typeof(List<MyTypeHere>));
                serializer.WriteObject(sw.AsStreamForWrite(), MyWeek.WeekList.ToList());

                await sw.FlushAsync();
            }
        }

        MyWeek = null;

        return true;
    }
    catch(Exception ex)
    {
        return false;
    }
}

我正在调用 Save(带断点它可以正常工作),然后调用 Load(带断点)加载文件,文件存在并填充我的对象图。

当我关闭应用程序并重新启动它时,会捕获 FileNotFoundException 的捕获。为什么?

据我所知,本地文件夹应该保留文件。我所缺少的显然应该是显而易见的......

谢谢

编辑:

我正在使用 Windows Phone 模拟器,当我关闭它并在 Visual Studio 上按 F5 时,该文件不再存在。

【问题讨论】:

  • 代码看起来正确,如何关闭/重新启动应用程序?
  • 嗯,模拟器可以持久化吗?我正在用模拟器开发,等待我的妻子带回设备。但这不可能吗?
  • 是的,模拟器仍然存在,您可以使用此工具检查其中有哪些文件:wptools.codeplex.com

标签: c# windows-phone-8 windows-phone file-storage


【解决方案1】:

Apparently by closing the emulator, the files in Local Storage are lost, thanks to @cdndevs via Twitter。每次我停止调试时,我都会关闭模拟器,而不是让模拟器在重启之间“停留”在那里。

通过在不关闭模拟器的情况下停止调试并重新启动应用程序,文件就在那里。好吧,我必须承认不是超级直觉,或者它可能只是我。希望能帮助像我这样的其他人;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多