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

如何使用以及如何解析Java中包含混合内容的文本文件,java,parsing,text-files,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

我需要一些关于如何用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
我必须

打印汽车购买值、汽车返回值,然后打印一个包含汽车ID和 基于最后一个表格创建表格集。 有谁能给我解释一下用java实现这一点的逻辑吗?我不是要代码,而是要一些指导方针/步骤/伪代码。我不明白如何将这个文本文件分成3个块,让输入阅读器一次只关注其中一个。例如,car ID可以类似于表中的客户机ID,那么如何不让输入读取器读取不必要的信息呢

另一件事-如果我读取文件,其中部分是制表符分隔的,而其他部分不是,我如何确定从哪里开始只读取制表符分隔的部分

如果文件开头的Cars PURED=1890,而我只需返回1890,我是否必须扫描整个文件?我是否搜索“已购买的汽车”字样,然后以某种方式获取价值

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

此外,这不是用于处理单个文件,而是用于提供的任何相同类型的文件,假设关键名称(如汽车id、购买的汽车、退回的汽车)相同


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

从它的外观来看:您正在尝试将数据从文本文档解析到数据表。我建议改为尝试使用XML格式,或者使用Java原生XML解析器(它吸收imo),或者使用第三方解析器来获取信息。通过使用XML标记,您可以轻松地按ID搜索汽车,并获得诸如价格、品牌等属性

这将更容易编辑和查看您的汽车信息。。。以下是一个例子:

<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往下看,就可以从汽车中获取任何需要保存到局部变量的信息

因此,为了查找购买的汽车,只需查找该标记,它将返回值,您不需要搜索整个文件。同样的事情也适用于其他任何事情。在找车吗?只要看看汽车下面的车号就行了。。。只找客户?只查看“客户端”块并搜索正确的ID

有关XML文件的更多信息,请参见此处

在这里学习如何使用Java原生XML管理

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


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

从外观上看:您正试图将数据从文本文档解析为数据表。我建议改为尝试使用XML格式,或者使用Java原生XML解析器(它吸收imo),或者使用第三方解析器来获取信息。通过使用XML标记,您可以轻松地按ID搜索汽车,并获得诸如价格、品牌等属性

这将更容易编辑和查看您的汽车信息。。。以下是一个例子:

<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往下看,就可以从汽车中获取任何需要保存到局部变量的信息

因此,为了查找购买的汽车,只需查找该标记,它将返回值,您不需要搜索整个文件。同样的事情也适用于其他任何事情。在找车吗?只要看看汽车下面的车号就行了。。。只找客户?只查看“客户端”块并搜索正确的ID

有关XML文件的更多信息,请参见此处

在这里学习如何使用Java原生XML管理

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

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

我不明白如何将这个文本文件分成3个块,让输入阅读器一次只关注其中一个

因为您不知道数据从何处开始和停止,所以需要按顺序读取文本文件,并且只在到达所需的部分时才开始关注数据。在伪代码中:

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;
}
你会注意到,在我们完成了我们的部分之后,我们不再继续阅读了——没有必要,除非你想继续往下读

你应该 把整件事都读一遍并储存起来,还是在处理每一部分的时候读几遍?这是一个设计决策,基于很多因素——阅读速度、内存大小与数据占用量等

您如何知道每个条目将与表格数据匹配?这取决于你如何储存它。阅读一些关于对象和数据结构的知识,了解一些想法。对于初学者来说,数组通常很容易处理

我不明白如何将这个文本文件分成3个块,让输入阅读器一次只关注其中一个

因为您不知道数据从何处开始和停止,所以需要按顺序读取文本文件,并且只在到达所需的部分时才开始关注数据。在伪代码中:

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;
}
你会注意到,在我们完成了我们的部分之后,我们不再继续阅读了——没有必要,除非你想继续往下读

你是应该把整件事都读一遍并保存起来,还是在处理每一部分时都要读几遍?这是一个设计决策,基于很多因素——阅读速度、内存大小与数据占用量等


您如何知道每个条目将与表格数据匹配?这取决于你如何储存它。阅读一些关于对象和数据结构的知识,了解一些想法。对于初学者来说,数组通常很容易处理。

是否有任何东西可以清楚地将各个部分分开,比如begin:?如果有,您可以定义不同的处理程序/解析器,并在读取行时切换到所需的处理程序/解析器。您需要在表中为已购买/已购买的模型保留一个列,以便跟踪购买或已购买的模型,并相应地获取数据。是否有任何东西可以清楚地分隔这些部分,如表begin:?如果有,您可以定义不同的处理程序/解析器,并在读取行时切换到所需的处理程序/解析器。您需要在表中为已购买/已购买的模型维护一个列,以便跟踪购买或已购买的模型并相应地获取数据。是的,我会使用XML,因为它更有意义,但不幸的是,我需要从源代码中读取它们,而不是在中间编辑。你的意思是“从中间的源代码中读取它们”。我的意思是,我不应该把文件转换成XML来解析它们。所以你必须把它们保存为文本文件并用那种方式解析它们。是否允许编辑文本文件?不,根本无法编辑,因为可能有许多相同类型的文件,每个文件都必须进行分析。我必须保持文件的原样。是的,我会使用XML,因为它更有意义,但不幸的是,我需要从源代码中读取它们,而不是在中间编辑。你的意思是“从中间的源代码中读取它们”。我的意思是,我不应该把文件转换成XML来解析它们。所以你必须把它们保存为文本文件并用那种方式解析它们。是否允许编辑文本文件?不,根本无法编辑,因为可能有许多相同类型的文件,每个文件都必须进行分析。我必须保持文件原样。