'Move from string to array but after that select by the first character (Record Type 1, 2, 5)

I need your help, I am new in Java

I need to read a flat file with 5 different of records the way to differentiate each record is the first characters, after that I have the idea to move to an 5 different array to play with with the data inside.

example

120220502Name Last Name1298843984    $1.50
120220501other client  8989899889   $23.89
2Toronto372 Yorkland drive        1 year Ontario
512345678Transfer             Stove          Pay
522457839Pending              Microwave      Interactive

any help will quite appreciated



Solution 1:[1]

Break the problem into chunks. The first problem is reading the file:

try (BufferedReader reader = new BufferedReader(new FileReader("path/to/file"))) {
    parseData(reader); //method to do the work.
} catch (IOException e) {
    e.printStackTrace();
}

Then you need to decide what kind of record it is:

public void parseData(BufferedReader input) throws IOException {
    for (String line = input.readLine(); line != null; line = input.readLine()) {
        if (line.startsWith("1")) {
            parseType1(line);
        } else if (line.startsWith("2")) {
            parseType2(line);
        } else if (line.startsWith("5")) {
            parseType5(line);
        } else {
            throw new Exception("Unknown record type: " + line.charAt(0));
        }
    }
}

Then you'll need to create the various parseTypeX method to handle turning the text into usable chunks and then into classes.

public Type1Record parseType1(String data) {
    //create a Type1Record
    Type1Record record = new Type1Record();
    //split the string something like 
    String [] fields = data.split("\\s+");
    //Assign those chunks to the record
    record.setId(fields[0]);
    record.setFirstName(fields[1]);
    record.setLastName(fields[2]);
    record.setTotal(fields[3]); //if you want this to be a real number, you'll need to remove the $       
}

Repeat the process with the other record types. You'll likely need to group records together, but that should be easy enough.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ryan