文件类

package
v0.0.0-...-2910145 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 25 Imported by: 0

Documentation

Overview

Package gfile 提供了对文件系统进行便捷操作的功能。

Index

Constants

View Source
const (
	// 文件系统的分隔符
	// 这里将分隔符定义为变量
	// 以便在必要时允许开发者进行修改
	Separator = string(filepath.Separator)

	// DefaultPermOpen 是文件打开时的默认权限。
	DefaultPermOpen = os.FileMode(0666)

	// DefaultPermCopy 是文件/文件夹复制时的默认权限。
	DefaultPermCopy = os.FileMode(0755)
)

Variables

View Source
var (
	// DefaultReadBuffer 是用于读取文件内容的缓冲区大小。
	DefaultReadBuffer = 1024
)

Functions

func OpenWithFlagPerm别名

func OpenWithFlagPerm别名(path string, flag int, perm os.FileMode) (*os.File, error)

OpenWithFlagPerm 使用自定义`flag`和`perm`打开文件/目录。 参数`flag`类似于:O_RDONLY, O_RDWR, O_RDWR|O_CREATE|O_TRUNC等。 参数`perm`类似于:0600, 0666, 0777等。

func ReadableSize别名

func ReadableSize别名(路径 string) string

ReadableSize 格式化给定路径 `path` 的文件大小,使其更易于人类阅读。

func Rename别名

func Rename别名(src string, dst string) error

Rename 是 Move 的别名。 请参阅 Move。

func X写入字节集

func X写入字节集(路径 string, 字节集 []byte) error

PutBytes 函数将二进制内容 `content` 写入到指定路径 `path` 的文件中。 如果目标文件不存在,它会递归创建该路径及其所有父目录,然后写入文件。

func X写入文本

func X写入文本(路径 string, 文本 string) error

PutContents 将字符串 `content` 写入到 `path` 指定的文件中。 如果该文件不存在,会递归创建包含 `path` 的所有目录及文件。

func X创建文件与目录

func X创建文件与目录(文件路径 string) (*os.File, error)

Create 以给定的 `path` 创建文件并递归创建其所在目录。 建议参数 `path` 使用绝对路径。

func X创建目录

func X创建目录(目录 string) (错误 error)

Mkdir 通过给定的 `path` 参数递归创建目录。 建议 `path` 参数使用绝对路径而非相对路径。

func X删除

func X删除(路径或文件夹 string) (错误 error)

Remove 函数用于删除参数 `path` 指定的文件或目录。 若参数 `path` 为目录,该函数会递归地删除整个目录及其包含的所有文件和子目录。

如果给定的 `path` 不存在或者为空,则该函数不做任何操作。

func X取main路径

func X取main路径() string

MainPkgPath 返回包含入口函数 main 的 main 包的绝对文件路径。

该功能仅在开发环境中可用。

注意1:仅对源代码开发环境有效,即仅对生成此可执行文件的系统有效。

注意2:当首次调用该方法时,如果处于异步 goroutine 中,则该方法可能无法获取到 main 包的路径。

func X取临时目录

func X取临时目录(可选路径 ...string) string

Temp 函数获取并返回当前系统的临时目录路径。

可选参数 `names` 指定的是子文件夹或子文件名, 这些名称会与当前系统的路径分隔符拼接,并将最终生成的完整路径返回。

func X取修改时间戳毫秒

func X取修改时间戳毫秒(路径 string) int64

MTimestampMilli 返回给定路径 `path` 下文件的修改时间,单位为毫秒。

func X取修改时间戳秒

func X取修改时间戳秒(路径 string) int64

MTimestamp 返回给定路径 `path` 文件的修改时间(以秒为单位)。

func X取修改时间秒

func X取修改时间秒(路径 string) time.Time

MTime 返回给定路径 `path` 下文件的修改时间(以秒为单位)。

func X取大小

func X取大小(路径 string) int64

Size 返回指定路径 `path` 文件的大小,单位为字节。

func X取大小并易读格式

func X取大小并易读格式(路径 string) string

SizeFormat 返回指定路径 `path` 下文件的大小,格式化为字符串。

func X取字符偏移位置

func X取字符偏移位置(reader io.ReaderAt, 待查找字符 byte, 查找起点 int64) int64

GetNextCharOffset 函数从 `start` 开始,返回给定字符 `char` 对应的文件偏移量。

func X取字节集按字符位置

func X取字节集按字符位置(reader io.ReaderAt, 待查找字符 byte, 查找起点 int64) ([]byte, int64)

GetBytesTilChar 返回文件内容作为 []byte,直到遇到下一个指定的字节 `char` 位置为止。

注意:返回的值中包含最后位置的字符。

func X取字节集按范围

func X取字节集按范围(reader io.ReaderAt, 起点 int64, 终点 int64) []byte

GetBytesByTwoOffsets 函数从 `start` 位置到 `end` 位置返回二进制内容作为 []byte 类型。 注意:返回的值不包含结束位置的字符,也就是说, 它返回的内容范围是 [start, end)。

func X取当前工作目录

func X取当前工作目录() string

Pwd 返回当前工作目录的绝对路径。 注意,如果获取当前工作目录失败,它将返回一个空字符串。

func X取当前进程名

func X取当前进程名() string

SelfName 返回当前运行进程(二进制文件)的文件名。

func X取当前进程目录

func X取当前进程目录() string

SelfDir 返回当前运行进程(二进制文件)的绝对目录路径。

func X取当前进程路径

func X取当前进程路径() string

SelfPath 返回当前运行进程(二进制文件)的绝对文件路径。

func X取文件列表

func X取文件列表(路径 string) ([]string, error)

DirNames 返回给定目录 `path` 下的子文件名。 注意,返回的名称不是绝对路径。

func X取文件字符偏移位置

func X取文件字符偏移位置(路径 string, 待查找字符 byte, 查找起点 int64) int64

GetNextCharOffsetByPath 函数从给定的 `start` 位置开始,返回文件中指定 `char` 字符的文件偏移量。 它以 os.O_RDONLY 标志和默认权限打开 `path` 指定的文件进行读取。

func X取文件字节集按字符位置

func X取文件字节集按字符位置(路径 string, 待查找字符 byte, 查找起点 int64) ([]byte, int64)

GetBytesTilCharByPath 函数通过给定的 `path` 返回文件内容,直到遇到指定字节 `char` 的位置为止。 它以 os.O_RDONLY 标志和默认权限打开 `path` 指定的文件进行读取。

注意:返回的结果包含最后一个位置的字符。

func X取文件字节集按范围

func X取文件字节集按范围(路径 string, 起点 int64, 终点 int64) []byte

GetBytesByTwoOffsetsByPath 根据路径返回从 `start` 到 `end` 的二进制内容作为 []byte。 注意:返回的值不包含结束位置的字符,这意味着它返回的内容范围是 [start, end)。 它以 os.O_RDONLY 标志和默认权限打开 `path` 指定的文件进行读取。

func X取用户目录

func X取用户目录(可选子目录或子文件 ...string) (string, error)

Home 返回当前用户主目录的绝对路径。 可选参数 `names` 指定了子文件夹或子文件, 这些名称将与当前系统分隔符连接,并与路径一起返回。

func X取绝对路径

func X取绝对路径(路径 string) string

Abs 返回 path 的绝对路径表示。 如果 path 不是绝对路径,则将其与当前工作目录连接, 以转换为绝对路径。对于给定的文件,其绝对路径名称不保证唯一性。 Abs 会对结果调用 Clean 函数。 这段代码是关于 Go 语言(Golang)中的 `path/filepath` 包中 Abs 函数的注释翻译: ```go Abs 函数返回路径 path 的绝对路径形式。 如果路径 path 不是绝对路径,该函数会将其与当前工作目录拼接, 从而生成一个绝对路径。需要注意的是,即使对于同一个文件,其计算出的绝对路径也未必是唯一的。 Abs 函数还会对处理后的结果调用 Clean 函数进行规范化。

func X取绝对路径且效验

func X取绝对路径且效验(路径 string) string

RealPath 将给定的 `path` 转换为绝对路径 并检查文件路径是否存在。 如果文件不存在,则返回一个空字符串。

func X取详情

func X取详情(路径 string) (os.FileInfo, error)

Stat返回一个FileInfo,用于描述指定名称的文件。 如果出现错误,其类型将会是*PathError。

func X复制

func X复制(文件或目录路径 string, 复制到 string, 选项 ...CopyOption) error

将文件/目录从`src`复制到`dst`。

如果`src`是文件,它将调用CopyFile实现复制功能, 否则调用CopyDir。

如果`src`是文件,但`dst`已存在且是一个文件夹, 则在`dst`目录下创建一个与`src`同名的文件。

示例: Copy("/tmp/file1", "/tmp/file2") => 将/tmp/file1复制到/tmp/file2 Copy("/tmp/dir1", "/tmp/dir2") => 将/tmp/dir1复制到/tmp/dir2 Copy("/tmp/file1", "/tmp/dir2") => 将/tmp/file1复制到/tmp/dir2/file1 Copy("/tmp/dir1", "/tmp/file2") => 报错

func X复制文件

func X复制文件(路径, 复制到 string, 选项 ...CopyOption) (错误 error)

CopyFile 将名为 `src` 的文件内容复制到名为 `dst` 的文件中。如果目标文件不存在,将会创建该文件。如果目标文件已存在,则其所有内容将被源文件内容替换。文件模式将从源文件复制,并且复制的数据将同步/刷新到稳定的存储设备中。 感谢:https://gist.github.com/r0l1/92462b38df26839a3ca324697c8cba04

func X复制目录

func X复制目录(目录路径 string, 复制到 string, 选项 ...CopyOption) (错误 error)

CopyDir递归地复制一个目录树,尝试保持原有的权限设置。

注意:源目录必须存在,并且符号链接会被忽略并跳过。

func X子文本替换

func X子文本替换(欲被替换的子文本, 用作替换的子文本, 文件路径 string) error

ReplaceFile将文件`path`的内容替换为新内容。

func X子文本替换_函数

func X子文本替换_函数(回调函数 func(路径, 内容 string) string, 文件路径 string) error

ReplaceFileFunc 通过回调函数 `f` 替换文件 `path` 的内容。

func X字节长度转易读格式

func X字节长度转易读格式(文件大小 int64) string

FormatSize 将大小 `raw` 格式化为更便于人工阅读的形式。

func X截断

func X截断(路径 string, 长度 int) (错误 error)

Truncate 函数通过给定的 `size` 截断指定路径 `path` 下的文件至相应大小。

func X打开

func X打开(路径 string, 读写模式 int, 权限模式 os.FileMode) (*os.File, error)

OpenFile函数以自定义的`flag`和`perm`打开文件/目录。 参数`flag`类似于:O_RDONLY, O_RDWR, O_RDWR|O_CREATE|O_TRUNC等。

func X打开并按只读模式

func X打开并按只读模式(路径 string) (*os.File, error)

Open 以只读方式打开文件/目录。

func X打开并按默认权限

func X打开并按默认权限(路径 string, 读写模式 int) (*os.File, error)

OpenWithFlag 函数以默认权限和自定义标志 `flag` 打开文件/目录。 默认的 `perm` 为 0666。 参数 `flag` 如:O_RDONLY, O_RDWR, O_RDWR|O_CREATE|O_TRUNC 等。

func X排序

func X排序(文件数组 []string) []string

SortFiles 将 `files` 按照以下顺序进行排序:目录 -> 文件。 注意,`files` 中的项应当是绝对路径。

func X易读格式转字节长度

func X易读格式转字节长度(大小文本 string) int64

StrToSize 将格式化的大小字符串转换为其字节表示的大小。

func X是否为文件

func X是否为文件(路径 string) bool

IsFile 检查给定的 `path` 是否为文件,也就是说它不是一个目录。 注意,如果 `path` 不存在,则返回 false。

func X是否为空

func X是否为空(路径 string) bool

IsEmpty 检查给定的 `path` 是否为空。 如果 `path` 是一个文件夹,它会检查该文件夹下是否存在任何文件。 如果 `path` 是一个文件,它会检查该文件的大小是否为零。

注意,如果 `path` 不存在,此函数也将返回 true。

func X是否可写

func X是否可写(路径 string) bool

IsWritable 检查给定的 `path` 是否可写。

TODO 提高性能;使用 golang.org/x/sys 以实现跨平台

func X是否可读

func X是否可读(路径 string) bool

IsReadable 检查给定的 `path` 是否可读。

func X是否存在

func X是否存在(路径 string) bool

Exists 检查给定的 `path` 是否存在。

func X是否存在目录

func X是否存在目录(路径 string) bool

IsDir 检查给定的 `path` 是否为一个目录。 注意,如果 `path` 不存在,则返回 false。

func X更改权限

func X更改权限(路径 string, 权限模式 os.FileMode) (错误 error)

Chmod 是 os.Chmod 的别名。 请参阅 os.Chmod。

func X枚举

func X枚举(目录 string, 匹配文件模式 string, 是否递归查找 ...bool) ([]string, error)

ScanDirFile 返回给定 `path` 下所有子文件的绝对路径, 如果给定参数 `recursive` 为 true,则会递归扫描目录。

参数 `pattern` 支持多个文件名模式, 使用 `,` 符号来分隔多个模式。

注意,它只返回文件,不包括目录。

func X枚举_函数

func X枚举_函数(目录 string, 匹配文件模式 string, 是否递归查找 bool, 匿名函数 func(路径 string) string) ([]string, error)

ScanDirFileFunc 函数返回给定路径 `path` 下所有子文件的绝对路径。 如果给定参数 `recursive` 为 true,则会递归扫描目录。

参数 `pattern` 支持多个文件名模式,使用 ',' 符号分隔多个模式。

参数 `recursive` 指定是否递归扫描 `path`,这意味着如果子文件也是一个文件夹,则会扫描其下级文件并将文件路径添加到结果数组中,默认情况下为 false。

参数 `handler` 指定了处理 `path` 及其子文件夹下每个子文件路径的回调函数。如果 `handler` 返回空字符串,则忽略该子文件路径,否则将子文件路径追加到结果切片中。

注意,传给 `handler` 的参数 `path` 不是一个目录而是一个文件。 此函数仅返回文件(不包括目录)。

func X枚举并含子目录名

func X枚举并含子目录名(目录 string, 匹配文件模式 string, 是否递归替换 ...bool) ([]string, error)

ScanDir 返回给定路径`path`下所有子文件的绝对路径, 若给定参数`recursive`为真,则会递归扫描目录。

参数`pattern`支持多种文件名模式, 可以使用逗号 ',' 作为分隔符来指定多个模式。

func X枚举并含子目录名_函数

func X枚举并含子目录名_函数(目录 string, 匹配文件模式 string, 是否递归替换 bool, 回调函数 func(路径 string) string) ([]string, error)

ScanDirFunc 函数返回给定 `path` 下所有子文件的绝对路径, 如果给定参数 `recursive` 为 true,则会递归扫描目录。

参数 `pattern` 支持多个文件名模式,使用 ',' 符号分隔多个模式。

参数 `recursive` 指定是否递归扫描 `path`,这意味着如果子文件也是一个文件夹,它会扫描其下的子文件并将文件路径追加到结果数组中,默认情况下为 false。

参数 `handler` 指定了处理 `path` 及其子文件夹下每个子文件路径的回调函数。如果 `handler` 返回空字符串,则忽略该子文件路径,否则将其子文件路径追加到结果切片中。

func X查找

func X查找(文件名 string, 优先级查找路径 ...string) (路径 string, 错误 error)

Search searches file by name `name` in following paths with priority: prioritySearchPaths, Pwd()、SelfDir()、MainPkgPath(). It returns the absolute file path of `name` if found, or en empty string if not found.

func X模糊查找

func X模糊查找(路径 string, 返回绝对路径 ...bool) ([]string, error)

Glob返回所有与pattern匹配的文件名,如果没有匹配的文件,则返回nil。模式语法与Match函数中相同。 模式可以描述层级式的文件名,例如(假设分隔符为'/')/usr/*/bin/ed。

Glob会忽略文件系统错误,如读取目录时的I/O错误。唯一可能返回的错误是ErrBadPattern,仅当模式格式不正确时发生。

func X目录子文本替换

func X目录子文本替换(欲被替换的子文本, 用作替换的子文本, 目录, 匹配文件模式 string, 是否递归替换 ...bool) error

ReplaceDir 函数用于替换 `path` 路径下文件的内容。 参数 `pattern` 指定需要进行替换的文件匹配模式。 如果给定的参数 `recursive` 为 true,则会递归地进行替换操作。

func X目录子文本替换_函数

func X目录子文本替换_函数(回调函数 func(路径, 内容 string) string, 目录, 匹配文件模式 string, 是否递归替换 ...bool) error

ReplaceDirFunc 函数使用回调函数 `f` 替换路径 `path` 下符合模式 `pattern` 的文件内容。 参数 `pattern` 指定需要匹配并替换的文件模式。 若给定参数 `recursive` 为真,则会递归地进行替换操作。

func X移动

func X移动(路径 string, 新路径 string) (错误 error)

Move 将`src`重命名为(移动到)`dst`路径。 如果`dst`已存在且不是一个目录,它将会被替换。

func X缓存读字节集

func X缓存读字节集(路径 string, 缓存时长 ...time.Duration) []byte

GetBytesWithCache 函数通过 `path` 从缓存中获取指定文件的 []byte 内容。 如果缓存中没有内容,会从由 `path` 指定的磁盘文件中读取内容。 参数 `expire` 指定了此文件内容在缓存中的有效期,单位为秒。

func X缓存读文本

func X缓存读文本(路径 string, 缓存时长 ...time.Duration) string

GetContentsWithCache 通过`path`从缓存返回指定文件的字符串内容。 如果缓存中没有内容,则会从由`path`指定的磁盘文件中读取内容。 参数`expire`指定了此文件内容在缓存中的有效期,单位为秒。

func X设置当前工作目录

func X设置当前工作目录(目录 string) (错误 error)

Chdir函数将当前工作目录更改为指定的目录名称。 如果出现错误,其类型将会是*PathError。

func X读字节集

func X读字节集(路径 string) []byte

GetBytes 函数返回 `path` 文件内容的 []byte 表示形式。 如果读取文件失败,则返回 nil。

func X读文本

func X读文本(路径 string) string

GetContents 函数返回字符串形式的 `path` 文件内容。 若读取文件失败,则返回一个空字符串。

func X路径取扩展名

func X路径取扩展名(路径 string) string

Ext 返回路径 path 使用的文件名扩展名。 扩展名是从路径中最后一个元素的最后一个点开始的后缀; 如果没有点,则为空。 注意:结果中包含符号 '.'。 示例: main.go => .go api.json => .json

func X路径取扩展名且不含点号

func X路径取扩展名且不含点号(路径 string) string

ExtName 类似于函数 Ext,它返回路径中使用的文件名扩展名, 但是结果中不包含符号'.'。 示例: main.go => go api.json => json

func X路径取文件名

func X路径取文件名(路径 string) string

Basename 返回路径的最后一个元素,其中包含文件扩展名。 在提取最后一个元素之前会移除尾部的路径分隔符。 如果路径为空,Base 返回 "."。 如果路径完全由分隔符组成,Basename 将返回一个单个分隔符。 示例: /var/www/file.js -> file.js file.js -> file.js

func X路径取文件名且不含扩展名

func X路径取文件名且不含扩展名(路径 string) string

Name函数返回路径中最后一个元素的文件名部分,不包括文件扩展名。 示例: /var/www/file.js -> file file.js -> file

func X路径取父目录

func X路径取父目录(路径 string) string

Dir 返回路径path去掉最后一个元素后的部分,通常为路径的目录部分。 在去掉最后一个元素之后,Dir会对路径进行Clean操作,并移除尾部的斜杠。 如果 `path` 为空,Dir 返回"."。 如果 `path` 为".", Dir 将路径视为当前工作目录。 如果 `path` 完全由分隔符组成,Dir 返回一个单独的分隔符。 返回的路径除非是根目录,否则不会以分隔符结尾。

func X路径生成

func X路径生成(路径s ...string) string

Join 使用当前系统的文件分隔符连接字符串数组paths。

func X追加字节集

func X追加字节集(路径 string, 字节集 []byte) error

PutBytesAppend 将二进制`content`追加到`path`文件中。 如果`path`文件不存在,会递归创建该文件。

func X追加文本

func X追加文本(路径 string, 文本 string) error

PutContentsAppend 将字符串 `content` 追加到 `path` 指定的文件中。 如果该文件不存在,会递归创建 `path` 指定的文件。

func X逐行读字节集_函数

func X逐行读字节集_函数(文件路径 string, 回调函数 func(字节集 []byte) error) error

ReadLinesBytes 逐行读取文件内容,并以 []byte 的形式将每一行传递给回调函数 `callback`。 它匹配由 '\r' 或 '\n' 分隔的每行文本,同时去除末尾的换行符。

注意,传递给回调函数的参数可能为空值,即使最后一行非空行没有换行符,也会将其传递给回调函数 `callback`。

func X逐行读文本_函数

func X逐行读文本_函数(文件路径 string, 回调函数 func(文本 string) error) error

ReadLines 逐行读取文件内容,并将每行字符串作为参数传递给回调函数 `callback`。 它按 '\r' 或 '\n' 字符分割每一行文本,同时去掉末尾的换行标记。

注意,传递给回调函数的参数可能为空值,即使最后一行非空行没有换行标记,也会将其传递给回调函数 `callback`。

Types

type CopyOption

type CopyOption struct {
	// 在源文件内容复制到目标文件后自动调用文件同步
	Sync bool

	// 保留原始文件的模式到目标文件。
	// 如果为 true,则 Mode 属性将不起作用。
	PreserveMode bool

	// 目标文件创建时的模式
	// 若PreserveMode为false,默认的文件模式为DefaultPermCopy
	Mode os.FileMode
}

CopyOption 是用于 Copy* 函数的选项。

Jump to

Keyboard shortcuts

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