Библиотека чтения / записи формата файлов Java с фиксированной шириной - PullRequest
4 голосов
/ 29 декабря 2011

Я ищу хорошую библиотеку Java, которая легко позволяет читать / записывать файлы фиксированной ширины.Необходим для поддержки устаревших систем, т.е. для работы с COBOL необходимы файлы.

Будем благодарны за любые предложения!

Спасибо.

Ответы [ 5 ]

4 голосов
/ 23 ноября 2014

uniVocity-parsers анализирует / записывает входы с фиксированной шириной (а также CSV и TSV). У него довольно много функций, которые вы могли бы использовать.

Пример ввода:

YearMake_Model___________________________________Description_____________________________Price___
1997Ford_E350____________________________________ac, abs, moon___________________________3000.00_
1999ChevyVenture "Extended Edition"______________________________________________________4900.00_
1996Jeep_Grand Cherokee__________________________MUST SELL!
air, moon roof, loaded_______4799.00_
1999ChevyVenture "Extended Edition, Very Large"__________________________________________5000.00_
_________Venture "Extended Edition"______________________________________________________4900.00_

Код читать:

FixedWidthFieldLengths lengths = new FixedWidthFieldLengths(4, 5, 40, 40, 8);
FixedWidthParserSettings settings = new FixedWidthParserSettings(lengths);
//sets the character used for padding unwritten spaces in the file
settings.getFormat().setPadding('_');

// creates a fixed-width parser with the given settings
FixedWidthParser parser = new FixedWidthParser(settings);
// parses all rows in one go.
List<String[]> allRows = parser.parseAll(new FileReader(yourFile));

Выход:

[Year, Make, Model, Description, Price]
[1997, Ford, E350, ac, abs, moon, 3000.00]
[1999, Chevy, Venture "Extended Edition", null, 4900.00]
[1996, Jeep, Grand Cherokee, MUST SELL!
air, moon roof, loaded, 4799.00]
[1999, Chevy, Venture "Extended Edition, Very Large", null, 5000.00]
[null, null, Venture "Extended Edition", null, 4900.00]

Раскрытие информации: я являюсь автором этой библиотеки. Это с открытым исходным кодом и бесплатно (лицензия Apache V2.0).

4 голосов
/ 15 августа 2013

Вы также можете взглянуть на Fixedformat4j: http://fixedformat4j.ancientprogramming.com/

Это точное назначение этой библиотеки

2 голосов
/ 29 декабря 2011

Я бы использовал ByteBuffer, возможно, с отображенными в память файлами. Это позволяет читать / писать примитивный тип с прямым или прямым порядком байтов. Этот вариант лучше всего подходит для двоичных данных фиксированной ширины.

Для текста фиксированной ширины вы можете использовать BufferedReader.readLine() и String.substring(from, to), чтобы получить нужные поля. Для вывода полей фиксированной ширины вы можете использовать PrintWriter.printf(format, fields ...).

1 голос
/ 05 августа 2014

Подход, основанный на схеме:

  • JSaPar Позволяет указать схему, с помощью которой вы можете анализировать или генерировать текст фиксированной ширины. Также выполняет некоторые базовые проверки типов и преобразования типов.
1 голос
/ 16 февраля 2012

Вы можете посмотреть на

  • JRecord Библиотека для чтения / записи файлов cobol из Java, поддерживает различные диалекты и форматы Cobol
  • cb2java Чтение файлов Cobol
  • Библиотека Legstar для обработки cobol ata
  • cb2xml Преобразование файлов Cobol в Xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...