代码之家  ›  专栏  ›  技术社区  ›  Thomas Joulin

Silverlight独立存储和加载大文件

  •  0
  • Thomas Joulin  · 技术社区  · 14 年前

    在WindowsPhone7应用程序中,我想查询一个大的XML文件(城市列表),该文件使用 Isolated Storage . 如果这样做,文件是否会加载到内存中(>5个月)?如果是的话,我还有别的解决办法吗?

    编辑:

    更多细节。我想使用AutoCompleteBox(http://www.jeff.wilcox.name/2008/10/introducting AutoCompleteBox/),但我不想使用web服务(这是固定数据,不需要联机),而是要查询文件/数据库/独立存储。。。我有固定的城市名单。我在评论中说是40k,但最后似乎接近1k行。

    3 回复  |  直到 14 年前
        1
  •  0
  •   Christian M    14 年前

    与其使用isolatedstorage,不如使用webservice。。。或者你的应用程序是为离线方式设计的?

    查询支持webservice、wcf或json的webservice非常简单,而且更易于维护:)

        2
  •  0
  •   Matt Lacey    14 年前

    与其有一个包含所有数据的大文件,还不如把它分解成许多小文件。(每个城市一个?)

    如果需要的话,可以有一个单独的文件来保存它们的索引。或者,根据文件的命名,您可以使用 IsolatedStorageFile.GetFileNames 获取所有文件的列表。

        3
  •  0
  •   Peter Mortensen icecrime    14 年前

    我将创建自己的文件格式,例如,使用字段之间的分隔符,每个记录有一行。 这样,您可以逐行读取文件,以使数据结构具有以下优点:

    1. 无需将整个文件拉入内存
    2. 没有XML开销(在桌面应用程序中这可能不是问题,但是在电话上下文中,一个5 MB的文本文件可能会变得更小一些)

    愚蠢的例子:

    New York City; 12345
    Berlin; 25635
    ...
    

    编辑: 考虑到卷不是那么大,你不需要任何形式的索引或按需加载。我将按上述方式存储城市-每行一条记录-将它们加载到列表中,并使用LINQ选择所需的项目。这可能会很快,并保持您的应用程序非常迅速。

    在这种情况下,在我看来,XML并不是最好的工具。您的结构非常简单,用XML存储可能会使文件大小增加一倍,这是移动设备的一个问题,也会减慢解析速度,在本例中也是一个问题。