java-fwf

A fast, type-safe, language-agnostic compliant Java library for parsing, formatting, and generating Fixed Width Files (FWF).

Java 17+ / 25 JUnit 5 100% Coverage FWF Spec v1.0.0

⚡ Type-Safe Column Definitions

Support for CharColumn, RightCharColumn, PositiveIntegerColumn, PositiveDecimalColumn, DateColumn, TimeColumn, and DateTimeColumn.

📜 Structure Descriptors

Compose header, details, and footer rows using HeaderRowDescriptor, DetailRowDescriptor, and FooterRowDescriptor.

🔍 Cross-Language Hydration

Fully compatible with Python pyfwf hydration JSON formats and compliant with fwf-compliance-tests v1.0.0.

Quick Usage Example

import io.github.kelsoncm.fwf.columns.*;
import io.github.kelsoncm.fwf.descriptors.*;
import io.github.kelsoncm.fwf.readers.Reader;
import java.util.List;

// 1. Define Columns
CharColumn nameCol = new CharColumn("name", 20);
PositiveIntegerColumn ageCol = new PositiveIntegerColumn("age", 3);

// 2. Define Descriptors
DetailRowDescriptor detail = new DetailRowDescriptor(List.of(nameCol, ageCol));
FileDescriptor fileDescriptor = new FileDescriptor(List.of(detail));

// 3. Read Content
String content = "KELSON MEDEIROS     045\n";
Reader reader = new Reader(content, fileDescriptor, "\n");

for (var row : reader) {
    System.out.println("Name: " + row.get("name") + ", Age: " + row.get("age"));
}