我有一个文本文件,其中包含 300,000 个单词的列表以及它们出现的频率。每行的格式为 Word:FequencyOfOccurence。
我希望可以从 C# 代码中访问此信息。我无法对列表进行硬编码,因为它太长,并且我不确定如何从服务器上的文件访问它。理想情况下,我希望仅在使用信息时才下载信息(以节省带宽),但这不是一个高优先级,因为文件不太大并且互联网速度总是在增加。
它不需要可用于绑定。
项目构建后,信息不需要可编辑。
这是另一种选择。压缩该文件并将其粘贴到应用程序 XAP 旁边的 clientBin 文件夹中。然后在应用程序中需要内容的地方执行如下操作:-
public void GetWordFrequencyResource(Action<string> callback)
{
WebClient client = new WebClient();
client.OpenReadAsync += (s, args) =>
{
try
{
var zipRes = new StreamResourceInfo(args.Result, null)
var txtRes = Application.GetResourceStream(zipRes, new Uri("WordFrequency.txt", UriKind.Relative));
string result = new StreamReader(txtRes.Stream).ReadToEnd();
callback(result);
}
catch
{
callback(null); //Fetch failed.
}
}
client.OpenReadAsync(new Uri("WordFrequency.zip", UriKind.Relative"));
}
Usage:-
var wordFrequency = new Dictionary<string, int>();
GetWordFrequencyResource(s =>
{
// Code here to burst string into dictionary.
});
// Note code here is asynchronous with the building of the dictionary don't attempt to
// use the dictionary here.
上面的代码允许您以高效的 zip 格式存储文件,但不能存储在 XAP 本身中。因此您可以按需下载。它利用了 XAPis一个 zip 文件,所以Application.GetResourceStream
它旨在从 XAP 文件中提取资源,可用于 zip 文件。
顺便说一句,我实际上并不是建议您使用字典,我只是使用字典作为简单的例子。实际上,我会想象该文件是按排序顺序排列的。如果是这种情况,你可以使用KeyValuePair<string, int>
对于每个条目,但创建一个自定义集合类型,将它们保存在数组中或List
然后使用一些二分搜索方法对其进行索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)