Skip to content

Write an EDI interchange file

EdiFileWriter.Write orders an IEdiFile's segments and serialises each through Serialise segments and elements, producing a single, ~-terminated line that overwrites any existing file at the target path.

Field Value
Operation ID OP-09
Trigger Caller request via EdiFileBuilder.Write(file).
Inputs IEdiFile.
Outputs A single-line EDI text file at Path.
Primary components EdiFileWriter.Write
Entry point Common\SAIF.Common.Files\Edi\Core\Writers\EdiFileWriter.cs

Steps

  1. Order file.Segments by Index (BR-031).
  2. For each segment, call EdiRecordBuilder.BuildSegmentRecord(rec.DataElements) and append ~ (BR-027).

    Origin: Step 2 delegates to EdiRecordBuilder.BuildSegmentRecord, documented fully in Serialise segments and elements.

  3. System.IO.File.WriteAllText(Path, filedata) — the entire interchange is written as one physical line, overwriting any existing file (BR-037).

Process flow

flowchart TD
    Start(["Caller: EdiFileBuilder.Write(file)"]) --> Order["Order file.Segments by Index"]
    Order --> Loop[For each segment]
    Loop --> Build["EdiRecordBuilder.BuildSegmentRecord +<br>append ~"]
    Build --> More{More segments?}
    More -->|Yes| Loop
    More -->|No| WriteFile["File.WriteAllText (overwrite)"]
    WriteFile --> EndOk([Single-line EDI file written])

Failure and edge-case behavior

  • Writing to a path that already contains a file overwrites it without warning or backup, because File.WriteAllText truncates the existing file (BR-037).
  • The output file has no physical line breaks; consumers that expect one segment per line must re-wrap the text themselves.

Sources

  • Common\SAIF.Common.Files\Edi\Core\Writers\EdiFileWriter.cs
  • Common\SAIF.Common.Files\Edi\Core\Builders\EdiRecordBuilder.cs
  • Common\SAIF.Common.Files\Edi\EdiFile.cs