Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析平面文件_Java_File Handling - Fatal编程技术网

用Java解析平面文件

用Java解析平面文件,java,file-handling,Java,File Handling,我有一个平面文件,其中数据以基于位置的格式存储,例如从1到5-存储一些x值,从6到13-存储一些y值,从14到18-存储一些z值等等。。 我需要解析该文件并获取这些值,然后填充一个bean 谁能告诉我最好的方法是如何解析文件。我使用的是Java 6。在普通Java中,非复杂、固定长度的行应该非常容易 为什么不使用简单的基本子字符串呢?我在解析相当大的平面文件时看到过这种方法,它并没有听起来那么糟糕。从中也很容易获得概述 myObject.setX(Integer.parseInt(input.s

我有一个平面文件,其中数据以基于位置的格式存储,例如从1到5-存储一些x值,从6到13-存储一些y值,从14到18-存储一些z值等等。。 我需要解析该文件并获取这些值,然后填充一个bean


谁能告诉我最好的方法是如何解析文件。我使用的是Java 6。

在普通Java中,非复杂、固定长度的行应该非常容易

为什么不使用简单的基本子字符串呢?我在解析相当大的平面文件时看到过这种方法,它并没有听起来那么糟糕。从中也很容易获得概述

myObject.setX(Integer.parseInt(input.substring(0,4)));
myObject.setY(input.substring(5,12); 
..  
如果您真的非常认真地将几个大型平面文件映射到java,那么您可能需要使用一些库

让我们在XML文件中指定映射,并使smooks运行时从字段映射到对象。还有一个用于图形映射的EclipseIDE。这个图书馆有点重

我真的很喜欢里面的组件。它需要引入消息路由器的开销,但是可以注释普通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;

你到底在哪一步结巴?使用例如
BufferedReader#readLine()
逐行读取文件,或使用例如
String#substring()
对行进行子串?不过,这是相当简单的方法。Oracle的Java基础教程中已经提到了这些问题。您应该先自己尝试一些东西,然后在遇到问题时提出更具体的问题。您可以使用a来阅读平面文件的每一行。如果有一种像管道(|)或逗号(,)这样分隔数据的模式,你可以用它来分隔数据并分发数据,如果不是你的情况,你可以用它来部分分割数据。它支持oneToMany吗?@gpa是的,有oneToMany注释,这里有综合文档:Bindy看起来很酷,不幸的是,没有关于如何在没有ApacheCamel的情况下使用Bindy的明确文档。是的,好的是ApacheCamel也很酷。