哪个快速阅读,.xml,.ini或.txt?

时间:2013-02-06 20:17:05

标签: c# .net xml io ini

我的应用程序必须读取存储在文件中的数据,并获取变量或数组的值以对其进行处理。

我的问题是,哪种文件格式可以快速轻松地从文件中检索数据。

我正在考虑使用.xml,.ini或只是一个简单的.txt文件。但是要阅读.txt文件,我将不得不用很多if或者条件编写很多代码。

我不知道如何使用.ini和.xml。但如果他们会更好,更快,所以我先学习它们,然后我会用它们。请指导我。

4 个答案:

答案 0 :(得分:4)

如果是表格数据,那么使用CSV(逗号分隔值)文件可能会更快。

如果它是结构化数据(如树或其他东西),那么你可以在C#中使用XML解析器,速度更快(但需要你做一些学习工作)

如果数据类似于字典,那么INI将是更好的选择。这实际上取决于应用程序中的数据类型

或者如果您不介意RDBMS,那么这将是一个更好的选择。通常,优化的RDBMS可以处理大数据并快速读取它们。

答案 1 :(得分:4)

我将假设你在这里指出的是原始性能不是优先于系统的稳健性。

对于与名称配对的简单数据,ini可能是最简单的解决方案。更复杂的结构化数据将引导您走向XML。根据{{​​3}},如果您在C#中工作(因此在.Net中假设),XML通常是首选,因为它已内置到.Net库中。由于xml更灵活,可以根据程序的需要进行更改,我个人也会推荐使用xi over ini作为文件标准。学习XML库需要做更多的工作,但它会很快得到回报,并且是一个标准化的系统。

文本可能很快,但为了提高速度或者花费更多工时来开发和维护高速专用解析器,你会牺牲大量强大的解析行为。

有关读取xml文件的参考:(在.Net库中本机支持)

有关在ini文件中阅读的参考资料:(在.Net库中不是原生支持的)

答案 2 :(得分:1)

如果您不介意使用二进制文件(人们无法自行阅读和修改),最快的方法是将一组数字序列化到一个文件中,并将其从文件中反序列化。

文件会更小,因为数据存储效率更高,需要更少的I / O操作才能读取数据。它还需要最少的解析(非常小),因此读取速度会很快。

假设您的号码位于此处:

int[] numbers = ..... ;

使用以下代码将它们保存到文件中:

using(var file = new FileStream(filename, FileMode.Create))
{
    var formatter = new BinaryFormatter();
    formatter.Serialize(numbers, file);
}

要从文件中读取数据,请将其打开,然后使用:

numbers = (int[])formatter.Deserialize(file);

答案 3 :(得分:0)

需要多快?

txt将是最快的选择。但是你必须自己编写解析器。 (速度 需要付费)

xml可能最容易实现,因为你有xmlSerializer(或其他类)来努力工作。

对于小配置文件(~0.5MB或更小),您将无法区分速度。说到真正的大文件,txt和自定义文件格式可能就是这样。但是,您始终可以选择以下两种方式:查看OpenStreetMap等项目,它们具有巨大的xml文件(> 10 GB),并且仍可使用。