gf

package module
v1.3.5 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: Apache-2.0 Imports: 12 Imported by: 4

README

gf

介绍

gf是一个使用Go编写的文件/文本管理模块,通过管道的方式可以快速实现复杂的需求,同时针对方法拆分独立,避免代码重复

功能清单

  • 文本增删改查
  • 文件/文件夹增删改
  • 文本单行单列范围行范围列截取

截取中首/都是1开始 截取中首/都是1开始

文件管理
  • 获取指定目录下所有的文件列表GetSubFIle
  • 获取文件内容
  • 删除文件夹DeleteDir
  • 删除文件DeleteFile
  • 创建文件Touch
  • 复制文件Copy
  • 移动文件Move
  • 追加字符串到文件EchoAdd或者WriteAdd
  • 覆盖字符串到文件Echo或者Write
文件判断
  • 判断路径是否存在 Exists
  • 判断路径是否为目录IsDir
  • 判断路径是否为文件IsFile
获取文件信息
  • 获取文件修改时间GetFileModTime
  • 获取文件创建时间GetFileCreateTime
  • 获取文件大小GetFileSize
  • 文件大小格式转换GetHumanReadableSize
  • 获取文件MD5GetFileMd5
  • 获取文件格式(通过文件名)GetFileFormatName
  • 获取文件格式(通过文件内容)GetFileFormat
  • 获取指定目录下指定格式的文件列表(通过文件名)GetSubFIleFormat
  • 获取文件绝对路径GetFileAbsPath
  • 获取文件基础名GetFileBaseName

安装

go get -u gitee.com/liumou_site/gf

使用说明

https://pkg.go.dev/gitee.com/liumou_site/gf

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Copy added in v1.3.2

func Copy(src, dst string) error

Copy 函数将源文件从src路径复制到dst路径。 它使用FileMan实例来执行复制操作并处理任何可能发生的错误。 参数:

src - 源文件的路径。
dst - 目标文件的路径。

返回值:

如果复制过程中发生错误,则返回该错误;否则返回nil。

func DeleteDir added in v1.3.2

func DeleteDir(p string) error

DeleteDir 删除指定路径下的目录及其内容。 参数:

p: 待删除目录的路径。

返回值:

如果删除操作成功,则返回nil;否则返回错误。

func DeleteFile added in v1.3.2

func DeleteFile(filename string) error

DeleteFile 删除指定的文件。

参数:

filename: 要删除的文件的名称。

返回值:

如果文件删除成功或不存在,则返回nil;否则返回错误。

func Echo added in v1.3.2

func Echo(filename, text string) error

Echo 将指定的文本写入指定的文件中。 如果文件不存在,会尝试创建该文件。 参数:

filename - 要写入的文件名。
text - 要写入文件的文本内容。

返回值:

如果写入过程中发生错误,返回该错误;否则返回nil。

func EchoAdd added in v1.3.2

func EchoAdd(filename, text string, wrap bool) error

EchoAdd 将指定的文本内容添加到给定的文件中。 参数:

filename - 要写入的文件名。
text - 要添加到文件中的文本内容。
wrap - 决定是否在文本末尾添加换行符的布尔值。

返回:

可能发生的错误,如果没有错误,则为nil。

func Exists added in v1.3.0

func Exists(p string) bool

Exists 检查指定路径的文件或目录是否存在。 参数:

p: 需要检查的文件或目录的路径。

返回值:

bool: 如果文件或目录存在,则返回true;否则返回false。

该函数通过调用os.Stat来获取路径的信息,如果路径不存在,则os.Stat会返回错误,从而判断路径是否存在。

func GetFileAbsPath added in v1.3.2

func GetFileAbsPath(p string) string

GetFileAbsPath 获取文件的绝对路径 参数:

p: 文件的相对路径或绝对路径

返回值:

string: 文件的绝对路径,如果获取失败则返回空字符串

此函数尝试将给定的文件路径转换为绝对路径,以便在文件系统中精确定位文件位置 如果转换过程中遇到错误,将记录错误信息并返回空字符串

func GetFileBaseName added in v1.3.2

func GetFileBaseName(filename string) string

GetFileBaseName 返回文件的基名。 该函数接受一个文件路径字符串作为参数,并返回路径中的最后一个文件名或目录名。 如果输入的文件路径为空或不包含有效的文件名,则返回空字符串。

参数:

filename (string): 文件路径字符串,例如: text/dir/1.zip

返回值:

string: 文件的基名: 1.zip

func GetFileFormat added in v1.3.0

func GetFileFormat(filename string) (string, error)

GetFileFormat 获取文件的格式,通过读取文件内容实现,而不是文件名后缀 参数:

filename: 文件名

返回值:

string: 文件格式的扩展名
error: 错误信息,如果执行成功则为nil

func GetFileFormatName added in v1.3.3

func GetFileFormatName(filename string) string

GetFileFormatName 根据文件名获取文件格式名 参数:

filename string: 文件名

返回值:

string: 文件的格式名,如".txt"、".jpg"等,不支持多段后缀,例如: .tar.gz

func GetFileMd5 added in v1.3.2

func GetFileMd5(filename string) string

GetFileMd5 计算并返回指定文件的MD5值。 参数:

filename - 要计算MD5值的文件名(字符串类型)。

返回值:

文件的MD5值(字符串类型)。如果文件不存在或读取失败,返回值可能为空或错误信息。

示例:

filename := "example.txt"
md5Value := GetFileMd5(filename)
fmt.Println(md5Value) // 输出: d41d8cd98f00b204e9800998ecf8427e

func GetFileModTime added in v1.3.1

func GetFileModTime(filename string) string

GetFileModTime 返回指定文件的修改时间。 该函数仅关注文件的修改时间,忽略文件大小等其他信息。 参数:

filename: 需要获取修改时间的文件的路径。

返回值:

修改时间的字符串表示。

func GetFileSize added in v1.3.1

func GetFileSize(filename string) (int, string)

GetFileSize 返回给定文件名的文件大小。 该函数首先调用 getFileInfo 获取文件的原始大小,然后将这个大小转换为更易于人类阅读的格式。 参数:

filename - 文件名字符串。

返回值:

文件的原始大小(以字节为单位)。
文件大小的易读表示形式,例如 "1.5MB"。

func GetHumanReadableSize added in v1.3.1

func GetHumanReadableSize(size int) string

GetHumanReadableSize 将文件大小转换为人类可读的格式。 参数 size 是文件的大小,以字节为单位。 返回值是一个字符串,表示转换后的大小,带有适当的单位(B, KB, MB, GB, TB)。

func GetSubFIle added in v1.3.0

func GetSubFIle(dir string) ([]string, error)

GetSubFIle 获取指定目录下的所有文件路径 参数:

dir: 需要遍历的目录路径

返回值:

[]string: 文件路径列表
error: 如果发生错误,则返回错误信息

func GetSubFIleFormat added in v1.3.0

func GetSubFIleFormat(dir, formatName string) ([]string, error)

GetSubFIleFormat 获取指定目录下具有特定格式的文件列表。

参数:

  • dir: 目录路径,例如 "D:/code/gitee/go/public"

  • formatName: 文件格式名称,例如 ".txt"

返回值:

  • []string: 符合指定格式的文件路径列表,例如 ["D:/code/gitee/go/public/file1.txt", "D:/code/gitee/go/public/file2.txt"]

  • error: 如果发生错误,返回相应的错误对象;否则返回 nil

func IsDir added in v1.3.0

func IsDir(p string) bool

IsDir 检查给定路径是否为目录。 参数:

p: 需要检查的路径。

返回值:

如果路径存在且为目录,则返回true;否则返回false。

func IsFile added in v1.3.0

func IsFile(p string) bool

IsFile 判断给定路径是否指向一个文件。 如果路径不存在或指向的是一个目录,则返回false。 参数:

p: 待检查的路径。

返回值:

bool: 如果路径指向的是一个文件,则返回true;否则返回false。

func Match added in v1.2.2

func Match(text, match string) (res string, err error)

Match 函数执行模糊匹配。 它接受两个字符串参数:text 是待搜索的文本,match 是匹配模式。 函数返回一个字符串 res,表示匹配的结果,以及一个错误 err,如果匹配过程中发生错误则不为 nil。

func MatchFirst added in v1.2.2

func MatchFirst(text, match string) (res string, err error)

MatchFirst 尝试在给定文本中匹配指定字符串开头的单词。 参数text是搜索的文本,match是需要匹配的字符串。 返回匹配到的单词(如果有的话)和可能出现的错误。 此函数使用正则表达式来实现匹配,特别地,它匹配以match开始且后面跟随零个或多个非空白字符的单词。

func MatchTail added in v1.2.2

func MatchTail(text, match string) (res string, err error)

MatchTail 使用正则表达式在文本中匹配以特定字符串结尾的内容 参数:

text - 需要进行匹配的文本
match - 要匹配的结尾字符串

返回值:

res - 匹配到的结果字符串
err - 错误信息,如果匹配过程中发生错误

func Move added in v1.3.2

func Move(src, dst string) error

Move 函数将文件从一个路径移动到另一个路径。 参数:

  • src: 源文件的路径,例如:"path/to/source/file.txt"
  • dst: 目标文件的路径,例如:"path/to/destination/file.txt"

返回值:

  • 如果移动操作成功,返回nil。
  • 如果移动操作失败,返回相应的错误信息。

func Touch added in v1.3.2

func Touch(filename string) error

Touch 尝试创建或更新指定文件的访问时间,类似于Unix的touch命令。 如果文件已存在,则更新其访问时间;如果文件不存在,则创建一个新文件。 参数:

filename: 需要创建或更新的文件名。

返回值:

error: 如果文件操作失败,则返回错误信息。

func Version

func Version() string

Version 返回当前软件的版本号。 该函数没有输入参数。 返回值为字符串类型,表示当前软件的版本号为v1.2.15。

func Write added in v1.3.2

func Write(filename, text string) error

Write 将指定的文本写入指定的文件中。 如果文件不存在,会尝试创建该文件。 参数:

filename - 要写入的文件名。
text - 要写入文件的文本内容。

返回值:

如果写入过程中发生错误,返回该错误;否则返回nil。

Types

type FileErr added in v1.2.13

type FileErr struct {
	FileIsNotExists error // 文件不存在: 当尝试访问或操作一个不存在的文件时返回的错误。
	PathIsFile      error // 这个路径是一个文件: 当路径指向一个文件而非目录时返回的错误。
	PathIsdir       error // 这个路径是一个文件夹: 当路径指向一个目录而非文件时返回的错误。
}

FileErr 结构体用于定义与文件操作相关的错误。 它封装了三种常见的文件错误情况,使得错误处理更加具体和方便。

type FileMan added in v1.3.0

type FileMan struct {
	PathAbs    string // 操作对象绝对路径
	PathBase   string // 操作对象基础文件名
	PathFormat string // 操作对象文件格式
	Src        string // 源文件
	SrcAbs     string // 源文件绝对路径
	SrcBase    string // 源文件基础文件名
	SrcFormat  string // 源文件格式
	Dst        string // 目标文件
	DstAbs     string // 目标文件绝对路径
	DstBase    string // 目标文件基础文件名
	DstFormat  string // 目标文件格式
	Err        error  // 错误
	// contains filtered or unexported fields
}

FileMan 结构体用于管理文件操作的相关信息。 它包含了源文件和目标文件的路径、文件名、格式等信息,以及操作过程中可能出现的错误和文件句柄。

func NewFileMan added in v1.2.7

func NewFileMan(src, dst string) *FileMan

NewFileMan 创建并初始化一个新的 FileMan 实例,用于管理文件的复制,移动,删除

该函数接收两个字符串参数:

src 和 dst,分别代表源文件路径和目标文件路径。

func (*FileMan) Copy added in v1.3.0

func (api *FileMan) Copy()

Copy 实现了 FileMan 的文件复制功能。 它打开源文件和目标文件,并将源文件的内容复制到目标文件中。

func (*FileMan) Move added in v1.3.0

func (api *FileMan) Move()

Move 方法用于移动文件或目录。 通过封装 os.Rename 方法,实现将源路径(api.Src)的文件或目录移动到目标路径(api.Dst)。 此方法简单地调用了 os 包的 Rename 函数,因此没有复杂的逻辑需要解释。 注意:错误处理(if api.Err != nil {...})在该方法外部进行。

type FileStatus added in v1.3.0

type FileStatus struct {
	Success  bool     // 是否操作成功
	AbsPath  string   // 文件绝对路径
	FileName string   // 需要操作的文件名
	FileList []string // 文件列表
	DirList  []string // 文件夹列表
	Err      error    // 错误信息(读写操作错误的信息)
	Text     string   // 最终字符串信息(例如文本读取信息)
	IsDirs   bool     // 是否属于文件夹
	IsFiles  bool     // 是否属于文件
	ExIst    bool     // 是否存在对象

	Perm    fs.FileMode // 文件所属权限
	FileErr *FileErr    // 文件错误
	// contains filtered or unexported fields
}

FileStatus 结构体用于表示文件操作的状态和相关信息。

func NewFile added in v1.1.3

func NewFile(filename string) *FileStatus

NewFile 创建并初始化一个ApiFileStatus实例,用于表示文件状态。 参数 filename: 指定文件的名称。 返回值: 返回一个指向ApiFileStatus结构的指针,该结构包含了文件的各种状态信息。

func (*FileStatus) Close added in v1.3.0

func (fi *FileStatus) Close()

Close is a method of the FileStatus type, used to close a file that may be open. This method checks if there is an open file handle, and if so, attempts to close it. After successfully closing, it sets the file handle to nil to indicate that the file is closed.

func (*FileStatus) CreateFile added in v1.3.0

func (fi *FileStatus) CreateFile()

CreateFile 创建文件 如果文件不存在,该方法会创建一个新文件

func (*FileStatus) Delete added in v1.3.0

func (fi *FileStatus) Delete()

Delete 方法用于删除 FileStatus 实例所代表的文件。 如果文件存在,则调用底层删除逻辑进行删除;如果文件不存在,则记录相关信息日志。

func (*FileStatus) DeleteDir added in v1.3.0

func (fi *FileStatus) DeleteDir()

DeleteDir 删除目录 该方法用于删除ApiFileStatus实例所指向的目录 首先检查目录是否存在,如果存在且确实是一个目录,则进行删除操作 如果目录不存在,或者存在但不是一个目录,则记录相应的错误信息

func (*FileStatus) DeleteFile added in v1.3.0

func (fi *FileStatus) DeleteFile()

DeleteFile 尝试删除一个文件。 首先检查文件是否存在,然后确认其是否为文件类型,最后执行删除操作。

func (*FileStatus) Echo added in v1.3.0

func (fi *FileStatus) Echo(text string)

Echo 写入文件,当文件已存在则覆盖,当文件不存在则创建,默认权限: 0644

该方法首先检查文件是否存在,如果存在且没有错误,则删除文件。 最后,打印给定的文本。

func (*FileStatus) EchoAdd added in v1.3.0

func (fi *FileStatus) EchoAdd(txt string, wrap bool)

EchoAdd 写入文本到文件中,当文件已存在则追加,当文件不存在则创建,默认权限: 0644 参数:

text - 要添加的文本字符串。
wrap - 布尔值,决定是否在文本末尾添加换行符。

func (*FileStatus) Exists added in v1.3.0

func (fi *FileStatus) Exists()

Exists 检查文件是否存在于文件系统中。 该方法通过调用 os.Stat 来获取文件信息,如果文件存在,则更新 ExIst 标志为 true。 如果文件不存在或出现其他错误,ExIst 标志保持为 false,并且错误信息会被存储在 Err 属性中。

func (*FileStatus) GetFileMd5 added in v1.3.0

func (fi *FileStatus) GetFileMd5() string

GetFileMd5 计算并返回文件的MD5哈希值。 此方法首先确认当前对象是否为文件,然后尝试打开文件并计算其MD5哈希值。 如果在任一阶段遇到错误,方法将记录错误信息并返回空字符串。

func (*FileStatus) IsDir added in v1.3.0

func (fi *FileStatus) IsDir()

IsDir 检查文件状态并设置 IsDirs 字段以指示文件是否为目录。 此方法主要用于确定 FileStatus 实例所引用的文件或目录是否为目录。

func (*FileStatus) IsFile added in v1.3.0

func (fi *FileStatus) IsFile()

IsFile 判断指定的文件状态是否为文件。 该方法通过文件名获取文件信息,并更新 FileStatus 结构体的属性, 以指示文件是否为目录或普通文件,同时记录可能的错误。

func (*FileStatus) Mkdir added in v1.3.0

func (fi *FileStatus) Mkdir(dir string, mode fs.FileMode)

Mkdir 创建一个目录及其所有父目录,如果目录已存在或涉及的文件名已存在且为目录,则不执行创建操作 参数:

dir: 需要创建的目录路径
mode: 新创建目录的权限模式

func (*FileStatus) Touch added in v1.3.0

func (fi *FileStatus) Touch()

Touch 检查文件是否存在,如果不存在则创建它 这个方法主要用于确认文件是否存在,如果不存在则创建一个新文件,不会返回任何数据

type ReadScreen

type ReadScreen struct {
	Text string // Text用于存储字符串内容

	Err      error    // Err用于存储错误信息
	FileName string   // FileName用于存储需要操作的文件名
	Slice    []string // Slice用于存储切片
	// contains filtered or unexported fields
}

ReadScreen 是一个用于API读取屏幕操作的结构体

func NewReadFile added in v1.1.3

func NewReadFile(filename string) *ReadScreen

NewReadFile 创建并初始化一个ApiReadScreen对象用于读取指定的文件。 参数 filename 指定要读取的文件名。 返回值是一个指向ApiReadScreen对象的指针,该对象的FileName字段被设置为传入的filename。

func (*ReadScreen) Column added in v1.1.0

func (rs *ReadScreen) Column(col int, sep string) *ReadScreen

Column 读取指定列, 首列: 1

func (*ReadScreen) ColumnRange added in v1.1.0

func (rs *ReadScreen) ColumnRange(start, end int, sep string) *ReadScreen

ColumnRange 读取指定范围列, 首列: 1

func (*ReadScreen) GetText added in v1.1.1

func (rs *ReadScreen) GetText() *ReadScreen

GetText 读取文件内容并存储到ApiReadScreen实例中。 该方法读取FileName指定的文件内容,将其转换为字符串并赋值给Text字段。 如果文件读取过程中发生错误,Err字段将被设置为相应的错误信息。 返回值始终为rs本身,以便进行错误检查或链式调用。

func (*ReadScreen) Grep added in v1.2.2

func (rs *ReadScreen) Grep(match string) *ReadScreen

Grep 通过关键词筛选所有匹配行 它通过调用 Match 函数来实现文本的匹配,并根据匹配结果更新 rs.Text 和 rs.Err。 之后,它将匹配到的文本按行分割成字符串切片,并移除其中的空行,然后返回 rs。

func (*ReadScreen) Line

func (rs *ReadScreen) Line(line int) *ReadScreen

Line 读取指定行,首行: 1

func (*ReadScreen) LineRange added in v1.1.0

func (rs *ReadScreen) LineRange(start, end int) *ReadScreen

LineRange 读取指定范围行, 首行: 1

func (*ReadScreen) Reset added in v1.3.0

func (rs *ReadScreen) Reset() *ReadScreen

Reset 重置 ReadScreen 实例的文本状态 该方法将 Text 和 han.Text 字段恢复到 textOld 的状态 主要用于在需要时将屏幕读取 API 的文本显示重置到初始或先前保存的状态 返回值是重置后的 *ReadScreen 实例,允许进行链式调用或进一步操作

type Text added in v1.3.0

type Text struct {
	Text string // Text 用于存储处理后的文本内容

	Slice   []string // Slice 用于存储处理后的文本切片内容
	Err     error    // Err 用于存储在文本处理过程中可能发生的错误信息
	GrepErr error    // GrepErr 用于存储在筛选文本过程中可能发生的错误信息
	ColErr  error    // ColErr 用于存储在截取文本列时可能发生的错误信息
	LineErr error    // LineErr 用于存储与行处理相关的错误信息
	// contains filtered or unexported fields
}

Text 是一个用于文本处理的结构体

func NewHandle added in v1.2.2

func NewHandle(text string) *Text

NewHandle 创建并返回一个新的Handle实例,用于处理字符串 该函数接收一个字符串参数text,该参数用于初始化Handle实例的Text和texts字段。 返回值是一个指向Handle实例的指针,其Text和texts字段都被设置为传入的text值。

func (*Text) Column added in v1.3.0

func (rs *Text) Column(col int, sep string) *Text

Column 提取文本中的指定列数据 col 指定要提取的列数,sep 指定列之间的分隔符 该方法会根据给定的列数和分隔符对文本进行分割,并提取相应的列数据

func (*Text) ColumnNull added in v1.3.0

func (rs *Text) ColumnNull(col int) *Text

ColumnNull 通过切割所有空白符进行列数据截取(\t, \n, \v, \f, \r, ’ ‘, U+0085 (NEL), U+00A0 (NBSP) )

参数

col: 指定要提取的列数,从1开始计数

返回值:

*Text 返回处理后的数据对象

func (*Text) ColumnRange added in v1.3.0

func (rs *Text) ColumnRange(start, end int, sep string) *Text

ColumnRange 截取文本中指定列范围的内容,首列: 1

参数

start: 开始列数(从1开始计数) end: 结束列数(包含该列) sep: 列之间的分隔符

返回

*Text: 返回处理后的文本对象

该方法首先会根据start和end参数检查截取范围是否有效,如果无效则设置错误信息并返回 之后遍历文本的每一行,对每一行按照sep进行分割,并根据start和end参数截取相应的列 如果某一行的列数少于end指定的列数,则会记录警告信息并跳过该行 最后将截取到的内容重新组合成文本,并更新对象的Text属性

func (*Text) Line added in v1.3.0

func (rs *Text) Line(line int) *Text

Line 读取指定行,首行: 1 该方法接收一个整数参数 line,表示目标行号。 如果 line 参数小于或等于0,当前行号将被重置为1。 如果 line 参数大于文件的实际行数,将设置一个错误并返回。 该方法返回 *Text 类型的指针,便于链式调用。

func (*Text) LineRange added in v1.3.0

func (rs *Text) LineRange(start, end int) *Text

LineRange 读取指定范围行, 首行: 1

参数

start: 开始行数(从1开始计数) end: 结束行数(包含该行) 返回值:

*Text 返回处理后的文本对象

该方法用于指定要处理的文本行范围,如果指定的行范围有效,则更新文本内容

func (*Text) Reset added in v1.3.0

func (rs *Text) Reset() *Text

Reset 重置 Text 对象的状态,为其成员变量赋予初始值。 这个方法主要用于清除任何先前的错误状态,使 Text 对象能够开始新的操作。 返回值是 *Text 类型,允许进行方法链式调用。

Jump to

Keyboard shortcuts

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