如何使用以及如何使用Java中的混合内容解析文本文件

时间:2014-03-21 17:52:33

标签: java parsing text-files

我需要一些关于如何在Java中处理文本文件的建议。我有一个文件,我在顶部有一些数据,然后是一个表。例如,在文件的开头我总共有:

Cars purchased = 1890
Cars returned = 130

然后有一张表,其中包含车辆ID:

id#1 =127974
id#2 =212445

然后是另一张桌子:

table begin:

Customer ID | Price paid | Car brand#1 | Car brand#2 |  Car brand#4  
id#1
id#2

我必须

  1. 打印出购买的汽车价值,汽车返回值,然后是带有汽车ID的数组和
  2. 根据最后一个表格创建表格集。
  3. 任何人都可以向我解释如何在java中解决这个问题的逻辑吗? 我不是要求代码,而是要求一些指南/步骤/伪代码。我无法理解如何将这个文本文件分成3个块并让输入阅读器一次只集中在三个文件中的一个上。例如,汽车ID可以类似于表中的客户端ID,那么可以做些什么来不让输入阅读器读取不必要的信息?

    另一件事 - 如果我读取文件,其中部分以制表符分隔而其他部分不是,我该如何确定从哪里开始阅读制表符分隔部分?< / p>

    如果文件的开头有Cars purchased = 1890并且我只需要返回1890,那么我是否必须扫描整个文件?我是否会搜索“购买汽车”字样然后以某种方式访问​​该值?

    然后,当我必须将所有这些放回到表格集中时,我如何知道每个条目将与原始文件中的相关条目匹配?

    此外,这不是用于处理单个文件,而是用于提供相同类型的任何文件,假设Car idCars purchasedCars returned等关键名称是相同。

    我真的需要帮助来理解如何处理这样的文件。

2 个答案:

答案 0 :(得分:4)

  

&#34;我无法理解如何将此文本文件分成3个块并让输入阅读器一次只关注三个中的一个。&#34;

由于您不知道数据的开始和停止位置,因此您需要按顺序读取文本文件,并且只有在到达所需部分时才开始关注数据。在伪代码中:

while (you haven't gotten to the text that marks the start of a section) {
  read a line;
  throw the line away;
}
while (you haven't reached the text that marks the end of a section) {
  read a line;
  do something with the line;
}

您注意到,在我们完成了我们的部分之后,我们不会继续阅读 - 没有必要,除非您想要进一步了解某些内容下来。

您是否应该阅读整篇文章并将其存储起来,或者在处理每个部分时多次阅读?这是一个基于很多因素的设计决策 - 阅读速度,你有多少内存与数据占用量等等。

您如何知道每个条目都与表格数据相符?这取决于你如何存储它。阅读有关一些想法的对象和数据结构。对于初学者来说,阵列通常很容易处理。

答案 1 :(得分:0)

从它的外观看:您正在尝试将数据从文本文档解析为数据表。我建议尝试使用XML格式,并使用Java本机XML解析器(suo imo)或第三方解析器来获取信息。通过使用XML标签,您可以轻松地通过ID搜索汽车并获取价格品牌etcetc ......等属性。

编辑和查看汽车信息会更容易......以下是一个例子:

<cars_purchased='10485'>
<cars_returned='1945'>

<cars>
    <id = '1000'>
         <brand>ASDF</brand>
         <car_model>SOMECARNAME</car_model>
         <price>$10000</price_paid>
         .......... And so on...
    </id>
    ... More cars here....
</cars>

<client>
     <clientID ='1000'>
          <client_paid>18424</client_paid>
          Whatever info u wanted on the client can go in tags here...
     </clientID>
     Any other clients....
</client>

从那里使用Java,从这个xml解析数据非常简单,只需按下ID,你就可以从汽车中获得你想要的任何信息以保存到局部变量......

因此,为了找到购买的汽车,只需查找该标签,它将返回值,您不需要搜索整个文件。同样的事情适用于其他任何事情。正在寻找一辆车?只需看看car_id的汽车大块......只找客户?只查看客户端块并搜索正确的ID ...

有关XML文件的更多信息,请查看此处http://en.m.wikipedia.org/wiki/XML ...

此处了解如何使用Javas本机XML管理... http://docs.oracle.com/javase/tutorial/jaxp/intro/index.html

很抱歉没有使用正确的超链接我在手机上,不知道如何手动操作...

希望在阅读完教程后,您可以自己设计解析器并轻松编辑/读取XML文件......