file

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

README

类二维表文件存储开发者指南

类二维表文件存储是一个对类二维表文件流进行抽象的框架,这个框架可以支持各类类二维表文件格式的读取和写入

输入文件流

// Opener 用于打开一个输入流的打开器
type Opener interface {
	Open(filename string) (stream InStream, err error) //打开文件名filename的输入流
}

// InStream 输入流
type InStream interface {
	Rows(conf *config.JSON) (rows Rows, err error) //获取行读取器
	Close() (err error)                            //关闭输入流
}

// Rows 行读取器
type Rows interface {
	Next() bool                                  //获取下一行,如果没有返回false,有返回true
	Scan() (columns []element.Column, err error) //扫描出每一行的列
	Error() error                                //获取下一行的错误
	Close() error                                //关闭行读取器
}

InStream输入流可以通过传入json配置文件来获取行读取器Rows,在Rows把一个行数据转化成一条记录,可以参考csv包的实现。另外,需要通过把Opener注册。

func init() {
	var opener Opener
	file.RegisterOpener("csv", &opener)
}

输出文件流

// Creator 创建输出流的创建器
type Creator interface {
	Create(filename string) (stream OutStream, err error) //创建名为filename的输出流
}

// OutStream 输出流
type OutStream interface {
	Writer(conf *config.JSON) (writer StreamWriter, err error) //创建写入器
	Close() (err error)                                        //关闭输出流
}

// StreamWriter 输出流写入器
type StreamWriter interface {
	Write(record element.Record) (err error) //写入记录
	Flush() (err error)                      //刷新至文件
	Close() (err error)                      //关闭输出流写入器
}

OutStream输入流可以通过传入json配置文件来获取输出流写入器StreamWriter,在StreamWriter把成一条记录转化一个行数据,可以参考csv包的实现。另外,需要通过把Creator注册。

func init() {
	var creator Creator
	file.RegisterCreator("csv", &creator)
}

Documentation

Overview

Package file 实现了文件输入流和输出流的框架,可以用于所有类二维表文件输入输出 文件输入流InStreamer框架,可以通过如下方式读取文件

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterCreator

func RegisterCreator(name string, creator Creator)

RegisterCreator 通过创建器名称name注册输出流创建器creator

func RegisterOpener

func RegisterOpener(name string, opener Opener)

RegisterOpener 通过打开器名称name注册输入流打开器opener

func UnregisterAllCreater

func UnregisterAllCreater()

UnregisterAllCreater 注销所有文件打开器

func UnregisterAllOpener

func UnregisterAllOpener()

UnregisterAllOpener 注销所有文件打开器

Types

type Creator

type Creator interface {
	Create(filename string) (stream OutStream, err error) //创建名为filename的输出流
}

Creator 创建输出流的创建器

type FetchHandler

type FetchHandler interface {
	OnRecord(element.Record) error         //处理记录
	CreateRecord() (element.Record, error) //创建空记录
}

FetchHandler 获取记录句柄

type InStream

type InStream interface {
	Rows(conf *config.JSON) (rows Rows, err error) //获取行读取器
	Close() (err error)                            //关闭输入流
}

InStream 输入流

type InStreamer

type InStreamer struct {
	// contains filtered or unexported fields
}

InStreamer 输入流包装

func NewInStreamer

func NewInStreamer(name string, filename string) (streamer *InStreamer, err error)

NewInStreamer 通过opener名称name的输入流打开器,并打开名为filename的输入流

func (*InStreamer) Close

func (s *InStreamer) Close() error

Close 关闭输入流

func (*InStreamer) Read

func (s *InStreamer) Read(ctx context.Context, conf *config.JSON, handler FetchHandler) (err error)

Read 使用获取记录句柄handler,传入上下文ctx和配置文件conf获取对应数据

type Opener

type Opener interface {
	Open(filename string) (stream InStream, err error) //打开文件名filename的输入流
}

Opener 用于打开一个输入流的打开器

type OutStream

type OutStream interface {
	Writer(conf *config.JSON) (writer StreamWriter, err error) //创建写入器
	Close() (err error)                                        //关闭输出流
}

OutStream 输出流

type OutStreamer

type OutStreamer struct {
	// contains filtered or unexported fields
}

OutStreamer 输出流包装

func NewOutStreamer

func NewOutStreamer(name string, filename string) (streamer *OutStreamer, err error)

NewOutStreamer 通过creator名称name的输出流包装,并打开名为filename的输出流

func (*OutStreamer) Close

func (s *OutStreamer) Close() error

Close 关闭写入包装

func (*OutStreamer) Writer

func (s *OutStreamer) Writer(conf *config.JSON) (StreamWriter, error)

Writer 通过配置conf创建流写入器

type Rows

type Rows interface {
	Next() bool                                  //获取下一行,如果没有返回false,有返回true
	Scan() (columns []element.Column, err error) //扫描出每一行的列
	Error() error                                //获取下一行的错误
	Close() error                                //关闭行读取器
}

Rows 行读取器

type StreamWriter

type StreamWriter interface {
	Write(record element.Record) (err error) //写入记录
	Flush() (err error)                      //刷新至文件
	Close() (err error)                      //关闭输出流写入器
}

StreamWriter 输出流写入器

Directories

Path Synopsis
Package compress 主要实现了压缩方法
Package compress 主要实现了压缩方法
Package csv 主要实现了stream/file的接口
Package csv 主要实现了stream/file的接口
Package xlsx 主要实现了stream/file的接口
Package xlsx 主要实现了stream/file的接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL