基本介绍
gfile
文件管理组件提供了更加丰富的文件/目录操作能力。
使用方式:
import "github.com/gogf/gf/v2/os/gfile"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gfile
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档: https://pkg.go.dev/github.com/gogf/gf/v2/os/gfile
内容管理
GetContents
- 说明:读取指定路径文件内容,以字符串形式返回。
- 格式:
func GetContents(path string) string
- 示例:
func ExampleGetContents() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// It reads and returns the file content as string.
// It returns empty string if it fails reading, for example, with permission or IO error.
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
}
GetContentsWithCache
- 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存。
- 格式:
func GetContentsWithCache(path string, duration ...time.Duration) string
- 示例:
func ExampleGetContentsWithCache() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_cache")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// It reads the file content with cache duration of one minute,
// which means it reads from cache after then without any IO operations within on minute.
fmt.Println(gfile.GetContentsWithCache(tempFile, time.Minute))
// write new contents will clear its cache
gfile.PutContents(tempFile, "new goframe example content")
// There's some delay for cache clearing after file content change.
time.Sleep(time.Second * 1)
// read contents
fmt.Println(gfile.GetContentsWithCache(tempFile))
// May Output:
// goframe example content
// new goframe example content
}
GetBytesWithCache
- 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存,返回[]byte。
- 格式:
func GetBytesWithCache(path string, duration ...time.Duration) []byte
- 示例:
func ExampleGetBytesWithCache() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_cache")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// It reads the file content with cache duration of one minute,
// which means it reads from cache after then without any IO operations within on minute.
fmt.Println(gfile.GetBytesWithCache(tempFile, time.Minute))
// write new contents will clear its cache
gfile.PutContents(tempFile, "new goframe example content")
// There's some delay for cache clearing after file content change.
time.Sleep(time.Second * 1)
// read contents
fmt.Println(gfile.GetBytesWithCache(tempFile))
// Output:
// [103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
// [110 101 119 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}
GetBytes
- 说明:读取指定路径文件内容,以字节形式返回。
- 格式:
func GetBytes(path string) []byte
- 示例:
func ExampleGetBytes() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// It reads and returns the file content as []byte.
// It returns nil if it fails reading, for example, with permission or IO error.
fmt.Println(gfile.GetBytes(tempFile))
// Output:
// [103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}
GetBytesTilChar
- 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
- 格式:
func GetBytesTilChar(reader io.ReaderAt, char byte, start int64) ([]byte, int64)
- 示例:
func ExampleGetBytesTilChar() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen)
// GetBytesTilChar returns the contents of the file as []byte
// until the next specified byte `char` position.
char, i := gfile.GetBytesTilChar(f, 'f', 0)
fmt.Println(char)
fmt.Println(i)
// Output:
// [103 111 102]
// 2
}
GetBytesByTwoOffsets
- 说明:以指定的区间读取文件内容
- 格式:
func GetBytesByTwoOffsets(reader io.ReaderAt, start int64, end int64) []byte
- 示例:
func ExampleGetBytesByTwoOffsets() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen)
// GetBytesTilChar returns the contents of the file as []byte
// until the next specified byte `char` position.
char := gfile.GetBytesByTwoOffsets(f, 0, 3)
fmt.Println(char)
// Output:
// [103 111 102]
}
PutContents
- 说明:往指定路径文件添加字符串内容。如果文件不存在将会递归的形式自动创建。
- 格式:
func putContents(path string, data []byte, flag int, perm os.FileMode) error
- 示例:
func ExamplePutContents() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// It creates and puts content string into specifies file path.
// It automatically creates directory recursively if it does not exist.
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
}
PutBytes
- 说明:以字节形式写入指定文件,如果文件不存在将会递归的形式自动创建
- 格式:
func PutBytes(path string, content []byte) error
- 示例:
func ExamplePutBytes() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutBytes(tempFile, []byte("goframe example content"))
// read contents
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
}
PutContentsAppend
- 说明:追加字符串内容到指定文件,如果文件不存在将会递归的形式自动创建。
- 格式:
func PutContentsAppend(path string, content string) error
- 示例:
func ExamplePutContentsAppend() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// It creates and append content string into specifies file path.
// It automatically creates directory recursively if it does not exist.
gfile.PutContentsAppend(tempFile, " append content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
// goframe example content append content
}
PutBytesAppend
- 说明:追加字节内容到指定文件。如果文件不存在将会递归的形式自动创建。
- 格式:
func PutBytesAppend(path string, content []byte) error
- 示例:
func ExamplePutBytesAppend() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// write contents
gfile.PutBytesAppend(tempFile, []byte(" append"))
// read contents
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
// goframe example content append
}
GetNextCharOffset
- 说明:从某个偏移量开始,获取文件中指定字符所在下标
- 格式:
func GetNextCharOffset(reader io.ReaderAt, char byte, start int64) int64
- 示例:
func ExampleGetNextCharOffset() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
f, err := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, DefaultPermOpen)
defer f.Close()
// read contents
index := gfile.GetNextCharOffset(f, 'f', 0)
fmt.Println(index)
// Output:
// 2
}
GetNextCharOffsetByPath
- 说明:从某个偏移量开始,获取文件中指定字符所在下标
- 格式:
func GetNextCharOffsetByPath(path string, char byte, start int64) int64
- 示例:
func ExampleGetNextCharOffsetByPath() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
index := gfile.GetNextCharOffsetByPath(tempFile, 'f', 0)
fmt.Println(index)
// Output:
// 2
}
GetBytesTilCharByPath
- 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
- 格式:
func GetBytesTilCharByPath(path string, char byte, start int64) ([]byte, int64)
- 示例:
func ExampleGetBytesTilCharByPath() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetBytesTilCharByPath(tempFile, 'f', 0))
// Output:
// [103 111 102] 2
}
GetBytesByTwoOffsetsByPath
- 说明:用两个偏移量截取指定文件的内容以字节形式返回
- 格式:
func GetBytesByTwoOffsetsByPath(path string, start int64, end int64) []byte
- 示例:
func ExampleGetBytesByTwoOffsetsByPath() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetBytesByTwoOffsetsByPath(tempFile, 0, 7))
// Output:
// [103 111 102 114 97 109 101]
}
ReadLines
- 说明:以字符串形式逐行读取文件内容
- 格式:
func ReadLines(file string, callback func(text string) error) error
- 示例:
func ExampleReadLines() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "L1 goframe example content\nL2 goframe example content")
// read contents
gfile.ReadLines(tempFile, func(text string) error {
// Process each line
fmt.Println(text)
return nil
})
// Output:
// L1 goframe example content
// L2 goframe example content
}
ReadLinesBytes
- 说明:以字节形式逐行读取文件内容
- 格式:
func ReadLinesBytes(file string, callback func(bytes []byte) error) error
- 示例:
func ExampleReadLinesBytes() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_content")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "L1 goframe example content\nL2 goframe example content")
// read contents
gfile.ReadLinesBytes(tempFile, func(bytes []byte) error {
// Process each line
fmt.Println(bytes)
return nil
})
// Output:
// [76 49 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
// [76 50 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}
Truncate
- 说明:裁剪文件为指定大小
- 注意:如果给定文件路径是软链,将会修改源文件
- 格式:
func Truncate(path string, size int) error
- 示例:
func ExampleTruncate(){
// init
var (
path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
)
// Check whether the `path` size
stat, _ := gfile.Stat(path)
fmt.Println(stat.Size())
// Truncate file
gfile.Truncate(path, 0)
// Check whether the `path` size
stat, _ = gfile.Stat(path)
fmt.Println(stat.Size())
// Output:
// 13
// 0
}
内容替换
ReplaceFile
- 说明:替换指定文件的指定内容为新内容
- 格式:
func ReplaceFile(search, replace, path string) error
- 示例:
func ExampleReplaceFile() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_replace")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// It replaces content directly by file path.
gfile.ReplaceFile("content", "replace word", tempFile)
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
// goframe example replace word
}
ReplaceFileFunc
- 说明:使用自定义函数替换指定文件内容
- 格式:
func ReplaceFileFunc(f func(path, content string) string, path string) error
- 示例:
func ExampleReplaceFileFunc() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_replace")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example 123")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// It replaces content directly by file path and callback function.
gfile.ReplaceFileFunc(func(path, content string) string {
// Replace with regular match
reg, _ := regexp.Compile(`\d{3}`)
return reg.ReplaceAllString(content, "[num]")
}, tempFile)
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example 123
// goframe example [num]
}
ReplaceDir
- 说明:扫描指定目录,替换符合条件的文件的指定内容为新内容
- 格式:
func ReplaceDir(search, replace, path, pattern string, recursive ...bool) error
- 示例:
func ExampleReplaceDir() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_replace")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// It replaces content of all files under specified directory recursively.
gfile.ReplaceDir("content", "replace word", tempDir, "gflie_example.txt", true)
// read contents
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example content
// goframe example replace word
}
ReplaceDirFunc
- 说明:扫描指定目录,使用自定义函数替换符合条件的文件的指定内容为新内容
- 格式:
func ReplaceDirFunc(f func(path, content string) string, path, pattern string, recursive ...bool) error
- 示例:
func ExampleReplaceDirFunc() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_replace")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example 123")
// read contents
fmt.Println(gfile.GetContents(tempFile))
// It replaces content of all files under specified directory with custom callback function recursively.
gfile.ReplaceDirFunc(func(path, content string) string {
// Replace with regular match
reg, _ := regexp.Compile(`\d{3}`)
return reg.ReplaceAllString(content, "[num]")
}, tempDir, "gflie_example.txt", true)
fmt.Println(gfile.GetContents(tempFile))
// Output:
// goframe example 123
// goframe example [num]
}
文件时间
MTime
- 说明:获取路径修改时间
- 格式:
func MTime(path string) time.Time
- 示例:
func ExampleMTime() {
t := gfile.MTime(gfile.TempDir())
fmt.Println(t)
// May Output:
// 2021-11-02 15:18:43.901141 +0800 CST
}
MTimestamp
- 说明:获取路径修改时间戳(秒)
- 格式:
func MTimestamp(path string) int64
- 示例:
func ExampleMTimestamp() {
t := gfile.MTimestamp(gfile.TempDir())
fmt.Println(t)
// May Output:
// 1635838398
}
MTimestampMilli
- 说明:获取路径修改时间戳(毫秒)
- 格式:
func MTimestampMilli(path string) int64
- 示例:
func ExampleMTimestampMilli() {
t := gfile.MTimestampMilli(gfile.TempDir())
fmt.Println(t)
// May Output:
// 1635838529330
}
文件大小
Size
- 说明:获取路径大小,不进行格式化
- 格式:
func Size(path string) int64
- 示例:
func ExampleSize() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_size")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "0123456789")
fmt.Println(gfile.Size(tempFile))
// Output:
// 10
}
SizeFormat
- 说明:获取路径大小,并格式化成硬盘容量
- 格式:
func SizeFormat(path string) string
- 示例:
func ExampleSizeFormat() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_size")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "0123456789")
fmt.Println(gfile.SizeFormat(tempFile))
// Output:
// 10.00B
}
ReadableSize
- 说明:获取给定路径容量大小,并格式化人类易读的硬盘容量格式
- 格式:
func ReadableSize(path string) string
- 示例:
func ExampleReadableSize() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_size")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "01234567899876543210")
fmt.Println(gfile.ReadableSize(tempFile))
// Output:
// 20.00B
}
StrToSize
- 说明:硬盘容量大小字符串转换为大小整形
- 格式:
func StrToSize(sizeStr string) int64
- 示例:
func ExampleStrToSize() {
size := gfile.StrToSize("100MB")
fmt.Println(size)
// Output:
// 104857600
}
FormatSize
- 说明:大小整形转换为硬盘容量大小字符串`K、m、g、t、p、e、b`
- 格式:
func FormatSize(raw int64) string
- 示例:
func ExampleFormatSize() {
sizeStr := gfile.FormatSize(104857600)
fmt.Println(sizeStr)
sizeStr0 := gfile.FormatSize(1024)
fmt.Println(sizeStr0)
sizeStr1 := gfile.FormatSize(999999999999999999)
fmt.Println(sizeStr1)
// Output:
// 100.00M
// 1.00K
// 888.18P
}
文件排序
SortFiles
- 说明:排序多个路径,按首字母进行排序,数字优先。
- 格式:
func SortFiles(files []string) []string
- 示例:
func ExampleSortFiles() {
files := []string{
"/aaa/bbb/ccc.txt",
"/aaa/bbb/",
"/aaa/",
"/aaa",
"/aaa/ccc/ddd.txt",
"/bbb",
"/0123",
"/ddd",
"/ccc",
}
sortOut := gfile.SortFiles(files)
fmt.Println(sortOut)
// Output:
// [/0123 /aaa /aaa/ /aaa/bbb/ /aaa/bbb/ccc.txt /aaa/ccc/ddd.txt /bbb /ccc /ddd]
}
文件检索
Search
- 说明:在指定目录(默认包含当前目录、运行目录、主函数目录;不会递归子目录)中搜索文件并返回真实路径。
- 格式:
func Search(name string, prioritySearchPaths ...string) (realPath string, err error)
- 示例:
func ExampleSearch() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_search")
tempFile = gfile.Join(tempDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
// search file
realPath, _ := gfile.Search(fileName, tempDir)
fmt.Println(gfile.Basename(realPath))
// Output:
// gflie_example.txt
}
目录扫描
ScanDir
- 说明:扫描指定目录,可扫描文件或目录,支持递归扫描。
- 格式:
func ScanDir(path string, pattern string, recursive ...bool) ([]string, error)
- 示例:
func ExampleScanDir() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_scan_dir")
tempFile = gfile.Join(tempDir, fileName)
tempSubDir = gfile.Join(tempDir, "sub_dir")
tempSubFile = gfile.Join(tempSubDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
gfile.PutContents(tempSubFile, "goframe example content")
// scans directory recursively
list, _ := gfile.ScanDir(tempDir, "*", true)
for _, v := range list {
fmt.Println(gfile.Basename(v))
}
// Output:
// gflie_example.txt
// sub_dir
// gflie_example.txt
}
ScanDirFile
- 说明:扫描指定目录的文件,支持递归扫描
- 格式:
func ScanDirFile(path string, pattern string, recursive ...bool) ([]string, error)
- 示例:
func ExampleScanDirFile() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_scan_dir_file")
tempFile = gfile.Join(tempDir, fileName)
tempSubDir = gfile.Join(tempDir, "sub_dir")
tempSubFile = gfile.Join(tempSubDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
gfile.PutContents(tempSubFile, "goframe example content")
// scans directory recursively exclusive of directories
list, _ := gfile.ScanDirFile(tempDir, "*.txt", true)
for _, v := range list {
fmt.Println(gfile.Basename(v))
}
// Output:
// gflie_example.txt
// gflie_example.txt
}
ScanDirFunc
- 说明:扫描指定目录(自定义过滤方法),可扫描文件或目录,支持递归扫描
- 格式:
func ScanDirFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error)
- 示例:
func ExampleScanDirFunc() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_scan_dir_func")
tempFile = gfile.Join(tempDir, fileName)
tempSubDir = gfile.Join(tempDir, "sub_dir")
tempSubFile = gfile.Join(tempSubDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
gfile.PutContents(tempSubFile, "goframe example content")
// scans directory recursively
list, _ := gfile.ScanDirFunc(tempDir, "*", true, func(path string) string {
// ignores some files
if gfile.Basename(path) == "gflie_example.txt" {
return ""
}
return path
})
for _, v := range list {
fmt.Println(gfile.Basename(v))
}
// Output:
// sub_dir
}
ScanDirFileFunc
- 说明:扫描指定目录的文件(自定义过滤方法),支持递归扫描。
- 格式:
func ScanDirFileFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error)
- 示例:
func ExampleScanDirFileFunc() {
// init
var (
fileName = "gflie_example.txt"
tempDir = gfile.TempDir("gfile_example_scan_dir_file_func")
tempFile = gfile.Join(tempDir, fileName)
fileName1 = "gflie_example_ignores.txt"
tempFile1 = gfile.Join(tempDir, fileName1)
tempSubDir = gfile.Join(tempDir, "sub_dir")
tempSubFile = gfile.Join(tempSubDir, fileName)
)
// write contents
gfile.PutContents(tempFile, "goframe example content")
gfile.PutContents(tempFile1, "goframe example content")
gfile.PutContents(tempSubFile, "goframe example content")
// scans directory recursively exclusive of directories
list, _ := gfile.ScanDirFileFunc(tempDir, "*.txt", true, func(path string) string {
// ignores some files
if gfile.Basename(path) == "gflie_example_ignores.txt" {
return ""
}
return path
})
for _, v := range list {
fmt.Println(gfile.Basename(v))
}
// Output:
// gflie_example.txt
// gflie_example.txt
}
常用目录
Pwd
- 说明:获取当前工作路径。
- 格式:
func Pwd() string
- 示例:
func ExamplePwd() {
// Get absolute path of current working directory.
fmt.Println(gfile.Pwd())
// May Output:
// xxx/gf/os/gfile
}
Home
- 说明:获取运行用户的主目录
- 格式:
func Home(names ...string) (string, error)
- 示例:
func ExampleHome() {
// user's home directory
homePath, _ := gfile.Home()
fmt.Println(homePath)
// May Output:
// C:\Users\hailaz
}
TempDir
-
说明:获取拼接系统临时路径后的绝对地址。
-
格式:
func TempDir(names ...string) string
- 示例:
func ExampleTempDir() {
// init
var (
fileName = "gfile_example_basic_dir"
)
// fetch an absolute representation of path.
path := gfile.TempDir(fileName)
fmt.Println(path)
// Output:
// /tmp/gfile_example_basic_dir
}
SelfPath
-
说明:获取当前运行程序的绝对路径。
-
格式:
func SelfPath() string
- 示例:
func ExampleSelfPath() {
// Get absolute file path of current running process
fmt.Println(gfile.SelfPath())
// May Output:
// xxx/___github_com_gogf_gf_v2_os_gfile__ExampleSelfPath
}
类型判断
IsDir
- 说明:检查给定的路径是否是文件夹。
- 格式:
func IsDir(path string) bool
- 示例:
func ExampleIsDir() {
// init
var (
path = gfile.TempDir("gfile_example_basic_dir")
filePath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
)
// Checks whether given `path` a directory.
fmt.Println(gfile.IsDir(path))
fmt.Println(gfile.IsDir(filePath))
// Output:
// true
// false
}
IsFile
- 说明:检查给定的路径是否是文件。
- 格式:
func IsFile(path string) bool
- 示例:
func ExampleIsFile() {
// init
var (
filePath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
dirPath = gfile.TempDir("gfile_example_basic_dir")
)
// Checks whether given `path` a file, which means it's not a directory.
fmt.Println(gfile.IsFile(filePath))
fmt.Println(gfile.IsFile(dirPath))
// Output:
// true
// false
}
权限操作
IsReadable
-
说明:检查给定的路径是否可读。
-
格式:
func IsReadable(path string) bool
- 示例:
func ExampleIsReadable() {
// init
var (
path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
)
// Checks whether given `path` is readable.
fmt.Println(gfile.IsReadable(path))
// Output:
// true
}
IsWritable
-
说明:检查指定路径是否可写,如果路径是目录,则会创建临时文件检查是否可写,如果是文件则判断是否可以打开