Как читать файл фиксированной длины в Java - PullRequest
0 голосов
/ 06 марта 2019

Я читаю плоские файлы в Java с фиксированной длиной Я новичок в этом, кто-нибудь может мне помочь, как сделать читатель фиксированной длины?

1 Ответ

0 голосов
/ 08 марта 2019

Когда это текстовый файл с фиксированной длиной строк , достаточно обычного считывателя.

Это предполагает наличие новой строки в конце каждой записи.

List<MyRecord> result = new ArrayList<>();

Path file = Paths.get("C:/Import/20190308.txt");
Charset charset = Charset.defaultCharset();

Files.lines(path, charset)
    .filter(line -> line.length() != 142)
    .forEach(line -> {
        MyRecord record = new MyRecord();
        record.id = Long.parseLong(line.substring(0, 10).trim());
        record.name = line.substring(10, 50).trim();
        record.age = Integer.parseInt(line.substring(50, 53).trim());
        ...
        result.add(record);
    });

String.trim() удаление пробелов до ("Мэри") и после ("89"). String.substring(position, nextPosition) выбирает фиксированное поле.

Строка чтения не содержит символов новой строки - \r\n или \n в целом. Есть проверка на длину строки (здесь 142). Это длина в char с, но, скорее всего, это также длина в байтах, поскольку записи фиксированной длины, вероятно, находятся в однобайтовой кодировке.


Для некоторого пользовательского класса MyRecord, отражающего строку CSV:

public class MyRecord {
    public long id;
    public String name;
    public int age;
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...