CSV 文件读取类

Posted Funsion Wu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSV 文件读取类相关的知识,希望对你有一定的参考价值。

class CsvReader {
    private $csv_file;
    private $spl_object = null;
    private $error;

    public function __construct($csv_file = ‘‘) {
        if($csv_file && file_exists($csv_file)) {
            $this->csv_file = $csv_file;
        }
    }

    public function set_csv_file($csv_file) {
        if(!$csv_file || !file_exists($csv_file)) {
            $this->error = ‘File invalid‘;
            return false;
        }
        $this->csv_file = $csv_file;
        $this->spl_object = null;
    }

    public function get_csv_file() {
        return $this->csv_file;
    }

    private function _file_valid($file = ‘‘) {
        $file = $file ? $file : $this->csv_file;
        if(!$file || !file_exists($file)) {
            return false;
        }
        if(!is_readable($file)) {
            return false;
        }
        return true;
    }

    private function _open_file() {
        if(!$this->_file_valid()) {
            $this->error = ‘File invalid‘;
            return false;
        }
        if($this->spl_object == null) {
            $this->spl_object = new SplFileObject($this->csv_file, ‘rb‘);
        }
        return true;
    }

    public function get_data($length = 0, $start = 0) {
        if(!$this->_open_file()) {
            return false;
        }
        $length = $length ? $length : $this->get_lines();
        $start = $start - 1;
        $start = ($start < 0) ? 0 : $start;
        $data = array();
        $this->spl_object->seek($start);
        while ($length-- && !$this->spl_object->eof()) {
            $data[] = $this->spl_object->fgetcsv();
            $this->spl_object->next();
        }
        return $data;
    }

    public function get_lines() {
        if(!$this->_open_file()) {
            return false;
        }
        $this->spl_object->seek(filesize($this->csv_file));
        return $this->spl_object->key();
    }

    public function get_error() {
        return $this->error;
    }
}

 

以上是关于CSV 文件读取类的主要内容,如果未能解决你的问题,请参考以下文章

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

CSV 文件读取类

EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

显示在 java 中读取 mapreduce 程序的 CSV 文件时出错

CSVFileUtil 读取写入CSV文件简单工具类