Class CsvBaseReader

java.lang.Object
org.miaixz.bus.office.csv.CsvBaseReader
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
CsvReader

public class CsvBaseReader extends Object implements Serializable
CSV文件读取器基础类,提供灵活的文件、路径中的CSV读取,一次构造可多次调用读取不同数据,参考:FastCSV
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • DEFAULT_CHARSET

      protected static final Charset DEFAULT_CHARSET
      默认编码
  • Constructor Details

    • CsvBaseReader

      public CsvBaseReader()
      构造,使用默认配置项
    • CsvBaseReader

      public CsvBaseReader(CsvReadConfig config)
      构造
      Parameters:
      config - 配置项
  • Method Details

    • setFieldSeparator

      public void setFieldSeparator(char fieldSeparator)
      设置字段分隔符,默认逗号','
      Parameters:
      fieldSeparator - 字段分隔符,默认逗号','
    • setTextDelimiter

      public void setTextDelimiter(char textDelimiter)
      设置 文本分隔符,文本包装符,默认双引号'"'
      Parameters:
      textDelimiter - 文本分隔符,文本包装符,默认双引号'"'
    • setContainsHeader

      public void setContainsHeader(boolean containsHeader)
      设置是否首行做为标题行,默认false
      Parameters:
      containsHeader - 是否首行做为标题行,默认false
    • setSkipEmptyRows

      public void setSkipEmptyRows(boolean skipEmptyRows)
      设置是否跳过空白行,默认true
      Parameters:
      skipEmptyRows - 是否跳过空白行,默认true
    • setErrorOnDifferentFieldCount

      public void setErrorOnDifferentFieldCount(boolean errorOnDifferentFieldCount)
      设置每行字段个数不同时是否抛出异常,默认false
      Parameters:
      errorOnDifferentFieldCount - 每行字段个数不同时是否抛出异常,默认false
    • read

      public CsvData read(File file) throws org.miaixz.bus.core.lang.exception.InternalException
      读取CSV文件,默认UTF-8编码
      Parameters:
      file - CSV文件
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • readFromString

      public CsvData readFromString(String csvStr)
      从字符串中读取CSV数据
      Parameters:
      csvStr - CSV字符串
      Returns:
      CsvData,包含数据列表和行信息
    • readFromString

      public void readFromString(String csvStr, org.miaixz.bus.core.center.function.ConsumerX<CsvRow> rowHandler)
      从字符串中读取CSV数据
      Parameters:
      csvStr - CSV字符串
      rowHandler - 行处理器,用于一行一行的处理数据
    • read

      public CsvData read(File file, Charset charset) throws org.miaixz.bus.core.lang.exception.InternalException
      读取CSV文件
      Parameters:
      file - CSV文件
      charset - 文件编码,默认系统编码
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • read

      public CsvData read(Path path) throws org.miaixz.bus.core.lang.exception.InternalException
      读取CSV文件,默认UTF-8编码
      Parameters:
      path - CSV文件
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • read

      public CsvData read(Path path, Charset charset) throws org.miaixz.bus.core.lang.exception.InternalException
      读取CSV文件
      Parameters:
      path - CSV文件
      charset - 文件编码,默认系统编码
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • read

      public CsvData read(Reader reader, boolean closeReader) throws org.miaixz.bus.core.lang.exception.InternalException
      从Reader中读取CSV数据,读取后关闭Reader
      Parameters:
      reader - Reader
      closeReader - 是否关闭Reader
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • readMapList

      public List<Map<String,String>> readMapList(Reader reader, boolean closeReader) throws org.miaixz.bus.core.lang.exception.InternalException
      从Reader中读取CSV数据,结果为Map,读取后关闭Reader。 此方法默认识别首行为标题行。
      Parameters:
      reader - Reader
      closeReader - 是否关闭Reader
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • read

      public <T> List<T> read(Reader reader, boolean closeReader, Class<T> clazz)
      从Reader中读取CSV数据并转换为Bean列表,读取后关闭Reader。 此方法默认识别首行为标题行。
      Type Parameters:
      T - Bean类型
      Parameters:
      reader - Reader
      closeReader - 是否关闭Reader
      clazz - Bean类型
      Returns:
      Bean列表
    • read

      public <T> List<T> read(String csvStr, Class<T> clazz)
      从字符串中读取CSV数据并转换为Bean列表,读取后关闭Reader。 此方法默认识别首行为标题行。
      Type Parameters:
      T - Bean类型
      Parameters:
      csvStr - csv字符串
      clazz - Bean类型
      Returns:
      Bean列表
    • read

      public void read(Reader reader, boolean closeReader, org.miaixz.bus.core.center.function.ConsumerX<CsvRow> rowHandler) throws org.miaixz.bus.core.lang.exception.InternalException
      从Reader中读取CSV数据,读取后关闭Reader
      Parameters:
      reader - Reader
      closeReader - 是否关闭Reader
      rowHandler - 行处理器,用于一行一行的处理数据
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • parse

      protected CsvParser parse(Reader reader) throws org.miaixz.bus.core.lang.exception.InternalException
      构建 CsvParser
      Parameters:
      reader - Reader
      Returns:
      CsvParser
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常