0

初めての Windows Phone 8 アプリを作成していて、簡単なことを試しています。ファイルの読み取り/書き込み。ここに私の2つの方法があります:

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 の catch がキャッチされます。なんで?

私が見ることができることから、ローカルフォルダーはファイルを永続化するはずです。私が見逃しているのは、明らかに明白なはずです...

ありがとう

編集:

Windows Phone エミュレーターを使用していますが、それを閉じて Visual Studio で F5 キーを押すと、ファイルがなくなりました。

4

1 に答える 1