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¶
- Order
file.SegmentsbyIndex(BR-031). - 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. 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.WriteAllTexttruncates 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.
Related documentation¶
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