我有一个平面文件,其中数据以基于位置的格式存储。例如。从 1到5 - 存储一些 x 值,从 6到13 - 存储一些 y 值,从 14到18 - 存储了一些 z 值等等。 我需要解析文件并获取这些值并填充bean。
任何人都可以告诉我,我可以解决它的最佳方式意味着我可以解析文件。我正在使用Java 6.
答案 0 :(得分:4)
在普通的java中,非复杂的,固定长度的行应该非常容易。
为什么不使用普通的基本子串?我已经看到这用于解析相当大的平面文件,并没有它听起来那么糟糕。很容易从中获得概述。
myObject.setX(Integer.parseInt(input.substring(0,4)));
myObject.setY(input.substring(5,12);
..
如果你真的认真地将几个大型平面文件映射到java,你可能想要使用一些库。
Smooks让我们在XML文件中指定映射,并将smooks运行时映射从字段到对象。还有一个用于图形映射的Eclipse IDE。这个图书馆有点重量级。
我非常喜欢Bindy中的Apache Camel组件。它需要引入消息路由器的开销,但是可以注释普通的java类,只需一次性完成映射和java类。
// Like this
@FixedLengthRecord(length=54, paddingChar=' ')
public static class Order {
@DataField(pos = 1, length=2)
private int orderNr;
@DataField(pos = 3, length=2)
private String clientNr;