如何在Java中读取这个非结构化平面文件?

时间:2017-06-21 13:56:47

标签: java arrays

我有文本文件

现在我想把它读成二维数组。

任何有示例代码或问题的人都被回答了吗?

1 个答案:

答案 0 :(得分:0)

考虑这个文件分为中间两个相同格式的记录,你需要设计包含你想从这个文件中获取的字段的类。之后你需要阅读

 List<String> fileLines  =  Files.readAllLines(Path pathToYourFile, Charset cs);

并使用正则表达式解析此文件。为简化此任务,您可以读取行,然后在每行指定regexp。

class UnstructuredFile {
    private List<String> rawLines;

    public UnstructuredFile (List<String> rawLines) {
        this.rawLines = rawLines;
    }

    public List<FileRecord> readAllRecords() {
        //determine where start and stop one record in list list.sublist(0,5) or split it to List<List<String>>

    }

    private FileRecord readOneRecord(List<String> record) {
        //read one record from list
    } 

}

在这个类中我们首先检测每个记录的开始和结束,然后将其传递给从List中解析一个FileRecord的方法

也许你需要更多地解决你的任务,考虑你有一个记录

------
data 1
data 2
data 3
------

我们要做类RecordRowOne,RecordRowTwo等每个类都有正则表达式知道如何 解析记录字符串的特定行,并返回像

这样的部分结果
RecordRowOne {
    //fields
    public RecordRowOne(String regex, String dataToParse) {
        //code
    }

    int getDataOne() {
        //parse
    }
}

示例中的另一个行类具有类似

的方法
getDataTwo(); 

创建所有这些行后,将它们传递给FileRecord类 从所有Row类获取数据,它将出现一个你文件的记录;

class FileRecord {
    //fields

    public FileRecord(RecordRowOne one, RecordRowTwo two) {
        //get all data from rows and set it to fields
    }

    //all getters for fields
}

这是你的基本想法