Class FixedWidthWriter

java.lang.Object
io.leandev.appfuse.csv.FixedWidthWriter
All Implemented Interfaces:
AutoCloseable

public class FixedWidthWriter extends Object implements AutoCloseable

固定寬度文本寫入器

寫入固定寬度格式的文本檔案,每個欄位有預定義的字元寬度。

設計原則

此類別提供與 CsvWriter 一致的 API,但產生固定寬度格式。 由於 Jackson CSV 不支援固定寬度,採用手動格式化方式實作。

使用範例

try (OutputStream os = new FileOutputStream("output.txt");
        FixedWidthWriter writer = new FixedWidthWriter(os, settings)) {

    writer.writeHeaders("code", "name", "price");

    for (Product product : products) {
        writer.write(product); // 自動提取屬性
    }
}
Since:
1.0
  • Constructor Details

    • FixedWidthWriter

      public FixedWidthWriter(OutputStream outputStream, FixedWidthWriterSettings settings, Charset charset)
      建構固定寬度寫入器
      Parameters:
      outputStream - 輸出串流
      settings - 寫入設定
      charset - 字元編碼
    • FixedWidthWriter

      public FixedWidthWriter(OutputStream outputStream, FixedWidthWriterSettings settings)
      建構固定寬度寫入器(使用 UTF-8 編碼)
      Parameters:
      outputStream - 輸出串流
      settings - 寫入設定
  • Method Details

    • writeHeaders

      public void writeHeaders(String... headers) throws IOException

      寫入 Header 欄位

      此方法會設定 Header 並寫入第一行。

      Parameters:
      headers - Header 欄位陣列
      Throws:
      IOException - 寫入失敗
    • writeHeaders

      public void writeHeaders(List<String> headers) throws IOException

      寫入 Header 欄位

      此方法會設定 Header 並寫入第一行。

      Parameters:
      headers - Header 欄位列表
      Throws:
      IOException - 寫入失敗
    • setHeaders

      public void setHeaders(String... headers)
      設定 Header 欄位(不寫入檔案)
      Parameters:
      headers - Header 欄位陣列
    • setHeaders

      public void setHeaders(List<String> headers)
      設定 Header 欄位(不寫入檔案)
      Parameters:
      headers - Header 欄位列表
    • getHeaders

      public List<String> getHeaders()
      取得當前 Header 欄位
      Returns:
      Header 欄位列表
    • write

      public void write(List<?> dataRow) throws IOException
      寫入一筆資料(List 格式)
      Parameters:
      dataRow - 資料列表
      Throws:
      IOException - 寫入失敗
    • write

      public void write(@NonNull Object data) throws IOException

      寫入一筆資料(物件格式)

      自動使用 PropertyMap 提取物件屬性,並根據 Header 順序寫入。

      Parameters:
      data - 物件資料
      Throws:
      IOException - 寫入失敗
    • flush

      public void flush() throws IOException
      強制寫入緩衝區
      Throws:
      IOException - 寫入失敗
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception