在Windows 8应用程序中本地持久保存数据的最佳方法

时间:2013-04-11 02:42:31

标签: javascript windows storage local

我正在为某人创建一个Windows 8应用程序(使用HTML 5和JavaScript),他们已经改变了对我的要求,就数据存储而言,我可以使用一些指导。我需要的是一个数据源,它只能为本地用户保留,而不能在数据库或云中联机。将为用户分配安装了应用程序的平板电脑,他们将通过表单输入数据以自定义其本地副本。

这是我的要求:

-Data必须在应用程序安装在设备上的生命周期内持续存在。

- 我需要能够在某种程度上查询数据。我基本上有大约15-20个接受输入数据的表单,然后是一个主表单,它将填充这些15-20个“子”表单以填充下拉列表和选择选项。

-Size不应该是一个问题,它是所有文本数据,并且不会输入太多。在应用程序的生命周期内无法看到这超过几百MB。

我已经研究过XML,indexedDB(外面听起来不错,但没有找到任何可以保证的保证),以及应用数据(本地),这在我的阅读能力上似乎非常有限。

您认为我最好的选择是什么?任何建议都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

这应该有帮助

    (function () {
    "use strict";
    var page = WinJS.UI.Pages.define("/html/index.html", {
        ready: function (element, options) {
                   //do your things 
                }
    });

    var roamingFolder = Windows.Storage.ApplicationData.current.roamingFolder;
    var afile = "FileToStoreStuff.txt";

    function makefile() {
        roamingFolder.createFileAsync(afile, Windows.Storage.CreationCollisionOption.replaceExisting)
            .then(function (file) {
                return Windows.Storage.FileIO.writeTextAsync(file);
            })
    }

    function fileRead() {
        roamingFolder.getFileAsync(filename)
            .then(function (file) {
                return Windows.Storage.FileIO.readTextAsync(file);
            }).done(function (text) {
                    //do stuff
                );
    }

})();

这种假设您的数据可能会发生变化。如果不是,您可以采用不同的方法,例如将roamingFolder变量替换为:

var localSettings = applicationData.localSettings;
var localFolder = applicationData.localFolder;

如果您需要从其他地方的应用程序中访问数据,请查看dev docs