将字符串写入(更新)到IsolatedStorage不起作用

时间:2013-01-22 02:20:32

标签: c# windows-phone-7 isolatedstorage

启动应用程序时,将执行文本文件的更新检查。如果远程文件的版本号高于本地版本号,则远程文件应保存到隔离存储器并替换当前存储器。不幸的是,它没有按预期工作。存储中仍然存在旧文件。

    public static bool WriteFileToIsolatedStorage(String content, String fileName)
    {
        bool result = false;

        MessageBox.Show(Leser.GetVersionInfo(content));

        IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
        StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(fileName, FileMode.Truncate, store));

        try
        {
            writer.Write(content);
            writer.Flush();
            writer.Close();

            result = true;
        }
        catch
        {
            result = false;
        }

        return result;
    }

我尝试了几个FileMode参数,如“Create”或“Truncate”,但是当重新启动应用程序时,总会有可用的更新。写入存储时没有错误,但版本号表示它无法正常工作。

我的项目资源管理器中有一个文本文件,其中包含应如上所述更新的数据。在开始时,我检查该文件的存储空间,如果没有找到,它将被写入该文件。这按预期工作。但更新版本没有写,我不知道为什么不。

解决方案:写得很好:)问题是我读了ressource文件而不是保存到IsolatedStorage的文件

    public static String ReadFileContents(String file)
    {
        String content = String.Empty;

        var ResourceStream = Application.GetResourceStream(new Uri(file, UriKind.Relative));
        if (ResourceStream != null)
        {
            Stream myFileStream = ResourceStream.Stream;
            if (myFileStream.CanRead)
            {
                StreamReader myStreamReader = new StreamReader(myFileStream);
                content = myStreamReader.ReadToEnd();
            }
        }

        return content;
    }

对不起伙计们!

2 个答案:

答案 0 :(得分:1)

以下是我用来创建文件并替换它的代码....只需更改关键字Truncate to Create即可。

public static bool WriteFileToIsolatedStorage(String content, String fileName)
    {
        bool result = false;

        //MessageBox.Show(Leser.GetVersionInfo(content));

        IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

        StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(fileName, FileMode.Create, store));

        try
        {
            writer.Write(content);
            writer.Flush();
            writer.Close();

            result = true;
        }
        catch
        {
            result = false;
        }

        StreamReader reader = new StreamReader(new IsolatedStorageFileStream(fileName, FileMode.Open, store));
        string rawData = reader.ReadToEnd();
        reader.Close();


        return result;
    }

我使用流阅读器来验证它是否被替换:)

答案 1 :(得分:0)

我没有看到您的代码有任何明显错误,但请尝试以下方法:

    public static bool WriteFileToIsolatedStorage(String content, String fileName)
    {
        bool result = false;

        MessageBox.Show(Leser.GetVersionInfo(content));
        try
        {
            using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Truncate, store))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.Write(content);

                result = true;
            }
        }
        catch
        {
            result = false;
        }

        return result;
    }

处理你实例化它的任何东西不仅是一个好主意,还应该确保所有内容都被刷新和关闭(即使这可能隐含在StreamWriter中,所以这在黑暗中是一个镜头)