Class CsvReader

java.lang.Object
org.aoju.bus.office.csv.CsvReader
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<CsvRow>

public class CsvReader extends Object implements Iterable<CsvRow>, Closeable
CSV文件读取器,参考:FastCSV
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • CsvReader

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

      public CsvReader(CsvReadConfig config)
      构造
      Parameters:
      config - 配置项
    • CsvReader

      public CsvReader(Reader reader, CsvReadConfig config)
      构造
      Parameters:
      reader - Reader,null表示不设置默认reader
      config - 配置项,null表示默认配置
    • CsvReader

      public CsvReader(File file, CsvReadConfig config)
      构造,默认Charset.UTF_8编码
      Parameters:
      file - CSV文件路径,null表示不设置路径
      config - 配置项,null表示默认配置
    • CsvReader

      public CsvReader(Path path, CsvReadConfig config)
      构造,默认Charset.UTF_8编码
      Parameters:
      path - CSV文件路径,null表示不设置路径
      config - 配置项,null表示默认配置
    • CsvReader

      public CsvReader(File file, Charset charset, CsvReadConfig config)
      构造
      Parameters:
      file - CSV文件路径,null表示不设置路径
      charset - 编码
      config - 配置项,null表示默认配置
    • CsvReader

      public CsvReader(Path path, Charset charset, CsvReadConfig config)
      构造
      Parameters:
      path - CSV文件路径,null表示不设置路径
      charset - 编码
      config - 配置项,null表示默认配置
  • 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.aoju.bus.core.exception.InternalException
      读取CSV文件,默认UTF-8编码
      Parameters:
      file - CSV文件
      Returns:
      CsvData,包含数据列表和行信息
      Throws:
      org.aoju.bus.core.exception.InternalException - IO异常
    • read

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

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

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

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

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

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

      public void read(Reader reader, org.aoju.bus.core.lang.function.XConsumer<CsvRow> rowHandler)
      从Reader中读取CSV数据,读取后关闭Reader
      Parameters:
      reader - Reader
      rowHandler - 行处理器,用于一行一行的处理数据
    • 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列表
    • readMapList

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

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

      public <T> List<T> read(Reader reader, int startLineIndex, Class<T> clazz)
      从Reader中读取CSV数据并转换为Bean列表,读取后关闭Reader 此方法默认识别首行为标题行
      Type Parameters:
      T - Bean类型
      Parameters:
      reader - Reader
      startLineIndex - 起始行号,不需要大于 0,因为首行是标题行
      clazz - Bean类型
      Returns:
      Bean列表
    • stream

      public Stream<CsvRow> stream()
      根据Reader创建Stream,以便使用stream方式读取csv行
      Returns:
      Stream
    • iterator

      public Iterator<CsvRow> iterator()
      Specified by:
      iterator in interface Iterable<CsvRow>
    • close

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