Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
基本介绍
gfile
文件管理组件提供了更加丰富的文件/目录操作能力。
使用方式:
Code Block | ||
---|---|---|
| ||
import "github.com/gogf/gf/v2/os/gfile" |
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gfile
Tip |
---|
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/os/gfile |
内容管理
GetContents
- 说明:读取指定路径文件内容,以字符串形式返回。
格式:
Code Block language go func GetContents(path string) string
示例:
Code Block language go func ExampleGetContents() { // init var ( fileName = "gfliegfile_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
- 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存。
格式:
Code Block language go func GetContentsWithCache(path string, duration ...time.Duration) string
示例:
Code Block language go func ExampleGetContentsWithCache() { // init var ( fileName = "
gfliegfile_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 }
GetBytes
GetBytesWithCache
- 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存,返回[]byte。
格式:
- 说明:读取指定路径文件内容,以字节形式返回。 示例:
Code Block language go func
ExampleGetBytesGetBytesWithCache(path string, duration ...time.Duration) []byte
示例:
Code Block language go func ExampleGetBytesWithCache() { // init var () { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_contentcache") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "goframe example content") // It reads and returns the file content as []byte. with cache duration of one minute, // which Itmeans returnsit nilreads iffrom itcache failsafter reading,then forwithout example,any withIO permissionoperations orwithin IOon errorminute. fmt.Println(gfile.GetBytesGetBytesWithCache(tempFile, time.Minute)) // Output: // [103 111 102 114 97 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] }
PutContents
// [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
- 说明:读取指定路径文件内容,以字节形式返回。
格式:
Code Block language go func GetBytes(path string) []byte
- 说明:往指定路径文件添加字符串内容。如果文件不存在将会递归的形式自动创建。
示例:
Code Block language go func ExamplePutContentsExampleGetBytes() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName) ) // It creates and puts content string into specifies file path.write contents gfile.PutContents(tempFile, "goframe example content") // It automaticallyreads createsand directoryreturns recursivelythe iffile itcontent does not exist. gfile.PutContents(tempFile, "goframe example content") // read contentsas []byte. // It returns nil if it fails reading, for example, with permission or IO error. fmt.Println(gfile.GetContentsGetBytes(tempFile)) // Output: // goframe example content }
PutBytes
[103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116] }
GetBytesTilChar
- 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
格式:
Code Block language go func GetBytesTilChar(reader io.ReaderAt, char byte, start int64) ([]byte, int64)
示例:
Code Block language go func ExampleGetBytesTilChar() { // init var ( fileName = "gfile_example.
- 说明:以字节形式写入指定文件,如果文件不存在将会递归的形式自动创建
示例:
Code Block language go func ExamplePutBytes() { // init var ( fileName = "gflie_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutBytesPutContents(tempFile, []byte("goframe example content")) // read contents fmt.Println(gfile.GetContents(tempFile))f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen) // Output: // goframe example content }
PutContentsAppend
- 说明:追加字符串内容到指定文件,如果文件不存在将会递归的形式自动创建。
示例:
Code Block language go func ExamplePutContentsAppend() { GetBytesTilChar returns the contents of the file as []byte // init var ( fileName = "gflie_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile until the next specified byte `char` position. char, i := gfile.Join(tempDirGetBytesTilChar(f, 'f', fileName0) fmt.Println(char) // write contents gfile.PutContents(tempFile, "goframe example content"fmt.Println(i) // read contents fmt.Println(gfile.GetContents(tempFile)) Output: // It[103 creates and append content string into specifies file path.111 102] // 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
2 }
GetBytesByTwoOffsets
- 说明:以指定的区间读取文件内容
格式:
说明:追加字节内容到指定文件。如果文件不存在将会递归的形式自动创建。Code Block language go func GetBytesByTwoOffsets(reader io.ReaderAt, start int64, end int64) []byte
示例:
Code Block language go func ExamplePutBytesAppendExampleGetBytesByTwoOffsets() { // init var ( fileName = "gfliegfile_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))f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen) // write contents gfile.PutBytesAppend(tempFile,GetBytesTilChar returns the contents of the file as []byte(" append")) // read contents until the next specified byte `char` position. char := gfile.GetBytesByTwoOffsets(f, 0, 3) fmt.Println(gfile.GetContents(tempFile)char) // Output: // goframe[103 example111 content // goframe example content append }
GetNextCharOffsetByPath
102] }
PutContents
- 说明:往指定路径文件添加字符串内容。如果文件不存在将会递归的形式自动创建。
格式:
- 说明:从某个偏移量开始,获取文件中指定字符所在下标 示例:
Code Block language go func
ExampleGetNextCharOffsetByPathputContents(path string, data []byte, flag int, perm os.FileMode) error
示例:
Code Block language go func ExamplePutContents() { // init var ( ) { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName) ) // write contents 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 index := fmt.Println(gfile.GetNextCharOffsetByPathGetContents(tempFile, 'f', 0) fmt.Println(index) // Output: // 2goframe example content }
GetBytesTilCharByPath
PutBytes
- 说明:以字节形式写入指定文件,如果文件不存在将会递归的形式自动创建
格式:
说明:以某个字符定位截取指定长度的文件内容以字节形式返回Code Block language go func PutBytes(path string, content []byte) error
示例:
Code Block language go func ExampleGetBytesTilCharByPathExamplePutBytes() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContentsPutBytes(tempFile, []byte("goframe example content")) // read contents fmt.Println(gfile.GetBytesTilCharByPathGetContents(tempFile, 'f', 0)) // Output: // [103goframe 111 102] 2 }
GetBytesByTwoOffsetsByPath
example content }
PutContentsAppend
- 说明:追加字符串内容到指定文件,如果文件不存在将会递归的形式自动创建。
格式:
说明:用两个偏移量截取指定文件的内容以字节形式返回Code Block language go func PutContentsAppend(path string, content string) error
示例:
Code Block language go func ExampleGetBytesByTwoOffsetsByPathExamplePutContentsAppend() { // init var ( fileName = "gfliegfile_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.GetBytesByTwoOffsetsByPathGetContents(tempFile, 0, 7)) // Output: // [103 111 102 114 97 109 101] }
ReadLines
- 说明:以字符串形式逐行读取文件内容
示例:
Code Block language go func ExampleReadLines() { // init var ( fileName = "gflie_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName) 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)) // write contents gfile.PutContents(tempFile, "L1Output: // 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
append content }
PutBytesAppend
- 说明:追加字节内容到指定文件。如果文件不存在将会递归的形式自动创建。
格式:
Code Block language go func PutBytesAppend(path string, content []byte) error
示例:
Code Block language go func ExamplePutBytesAppend() { // init var ( fileName = "gfile_example.txt" tempDir = gfile.TempDir("gfile
- 说明:以字节形式逐行读取文件内容
示例:
Code Block language go 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 fmt.Println(gfile.ReadLinesBytesGetContents(tempFile, func(bytes []byte) error {)) // Processwrite each linecontents fmtgfile.Println(bytes) return nil }PutBytesAppend(tempFile, []byte(" append")) // read contents fmt.Println(gfile.GetContents(tempFile)) // Output: // [76goframe 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] }
内容替换
ReplaceFile
example content // goframe example content append }
GetNextCharOffset
- 说明:从某个偏移量开始,获取文件中指定字符所在下标
格式:
Code Block language go func GetNextCharOffset(reader io.ReaderAt, char byte, start int64) int64
示例:
Code Block language go func ExampleGetNextCharOffset() { // init var ( fileName = "gfile
- 说明:替换指定文件的指定内容为新内容
示例:
Code Block language go func ExampleReplaceFile() { // init var ( fileName = "gflie_example.txt" tempDir = gfile.TempDir("gfile_example_replacecontent") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "goframe example content") // read contents fmt.Println(gfile.GetContents(tempFile)f, err := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, DefaultPermOpen) defer f.Close() // It replaces content directly by file path. gfile.ReplaceFile("content", "replace word", tempFile) read contents index := gfile.GetNextCharOffset(f, 'f', 0) fmt.Println(gfile.GetContents(tempFile)index) // Output: // goframe example content // goframe example replace word }
ReplaceFileFunc
2 }
GetNextCharOffsetByPath
- 说明:从某个偏移量开始,获取文件中指定字符所在下标
格式:
- 说明:使用自定义函数替换指定文件内容 示例:
Code Block language go func
ExampleReplaceFileFuncGetNextCharOffsetByPath(path string, char byte, start int64) int64
示例:
Code Block language go func ExampleGetNextCharOffsetByPath() { // init) { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_replacecontent") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "goframe example 123content") // read contents fmt.Println(index := gfile.GetContentsGetNextCharOffsetByPath(tempFile, 'f', 0) fmt.Println(index) // 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
Output: // 2 }
GetBytesTilCharByPath
- 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
格式:
Code Block language go func GetBytesTilCharByPath(path string, char byte, start int64) ([]byte, int64)
示例:
Code Block language go func ExampleGetBytesTilCharByPath() { // init var ( fileName = "gfile_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
- 说明:用两个偏移量截取指定文件的内容以字节形式返回
格式:
说明:扫描指定目录,替换符合条件的文件的指定内容为新内容Code Block language go func GetBytesByTwoOffsetsByPath(path string, start int64, end int64) []byte
示例:
Code Block language go func ExampleReplaceDirExampleGetBytesByTwoOffsetsByPath() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_replacecontent") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "goframe example content") // read contents fmt.Println(gfile.GetContentsGetBytesByTwoOffsetsByPath(tempFile, 0, 7)) // 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
Output: // [103 111 102 114 97 109 101] }
ReadLines
- 说明:以字符串形式逐行读取文件内容
格式:
Code Block language go func ReadLines(file string, callback func(text string) error) error
- 说明:扫描指定目录,使用自定义函数替换符合条件的文件的指定内容为新内容
示例:
Code Block language go func ExampleReplaceDirFuncExampleReadLines() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_replacecontent") tempFile = gfile.Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "L1 goframe example 123"content\nL2 goframe example content") // 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) stringReadLines(tempFile, func(text string) error { // ReplaceProcess witheach regular matchline reg, _ := regexp.Compile(`\d{3}`fmt.Println(text) return reg.ReplaceAllString(content, "[num]") }, tempDir, "gflie_example.txt", true) fmt.Println(gfile.GetContents(tempFile)) // Output: //nil }) // Output: // L1 goframe example 123content // L2 goframe example [num]content }
ReadLinesBytes
MTime
- 说明:以字节形式逐行读取文件内容说明:获取路径修改时间
格式:
Code Block language go func
ExampleMTimeReadLinesBytes(
) {
t := gfile.MTime(gfile.TempDir())
fmt.Println(t)
// May Output:
// 2021-11-02 15:18:43.901141 +0800 CST
}
示例:
MTimestamp
file string, callback func(bytes []byte) error) error
示例:
Code Block language go func ExampleReadLinesBytes() { // init var ( fileName = "gfile_example.txt" tempDir = gfile.TempDir("gfile_example_content") tempFile = gfile.Join(tempDir, fileName)
- 说明:获取路径修改时间戳(秒)
示例:
Code Block language go func ExampleMTimestamp() { t := gfile.MTimestamp(gfile.TempDir()) fmt.Println(t) // May Output: write contents gfile.PutContents(tempFile, "L1 goframe example content\nL2 goframe example content") // read 1635838398 }
MTimestampMilli
- 说明:获取路径修改时间戳(毫秒)
示例:
Code Block language go func ExampleMTimestampMilli()contents gfile.ReadLinesBytes(tempFile, func(bytes []byte) error { t := gfile.MTimestampMilli(gfile.TempDir()) // Process each line fmt.Println(tbytes) return nil }) // May Output: // 1635838529330 }
文件大小
Size
[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
- 说明:裁剪文件为指定大小
- 注意:如果给定文件路径是软链,将会修改源文件
格式:
Code Block language go func Truncate(path string, size int) error
示例:
Code Block language go 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
- 说明:替换指定文件的指定内容为新内容
格式:
Code Block language go func ReplaceFile(search, replace, path string) error
示例:
Code Block language go func ExampleReplaceFile() { // init var ( fileName = "gfile_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
- 说明:使用自定义函数替换指定文件内容
格式:
Code Block language go func ReplaceFileFunc(f func(path, content string) string, path string) error
示例:
Code Block language go func ExampleReplaceFileFunc() { // init var ( fileName = "gfile_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
- 说明:扫描指定目录,替换符合条件的文件的指定内容为新内容
格式:
Code Block language go func ReplaceDir(search, replace, path, pattern string, recursive ...bool) error
示例:
Code Block language go func ExampleReplaceDir() { // init var ( fileName = "gfile_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, "gfile_example.txt", true) // read contents fmt.Println(gfile.GetContents(tempFile)) // Output: // goframe example content // goframe example replace word }
ReplaceDirFunc
- 说明:扫描指定目录,使用自定义函数替换符合条件的文件的指定内容为新内容
格式:
Code Block language go func ReplaceDirFunc(f func(path, content string) string, path, pattern string, recursive ...bool) error
示例:
Code Block language go func ExampleReplaceDirFunc() { // init var ( fileName = "gfile_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, "gfile_example.txt", true) fmt.Println(gfile.GetContents(tempFile)) // Output: // goframe example 123 // goframe example [num] }
文件时间
MTime
- 说明:获取路径修改时间
格式:
Code Block language go func MTime(path string) time.Time
示例:
Code Block language go func ExampleMTime() { t := gfile.MTime(gfile.TempDir()) fmt.Println(t) // May Output: // 2021-11-02 15:18:43.901141 +0800 CST }
MTimestamp
- 说明:获取路径修改时间戳(秒)
格式:
Code Block language go func MTimestamp(path string) int64
示例:
Code Block language go func ExampleMTimestamp() { t := gfile.MTimestamp(gfile.TempDir()) fmt.Println(t) // May Output: // 1635838398 }
MTimestampMilli
- 说明:获取路径修改时间戳(毫秒)
格式:
Code Block language go func MTimestampMilli(path string) int64
示例:
Code Block language go func ExampleMTimestampMilli() { t := gfile.MTimestampMilli(gfile.TempDir()) fmt.Println(t) // May Output: // 1635838529330 }
文件大小
Size
- 说明:获取路径大小,不进行格式化
格式:
Code Block language go func Size(path string) int64
示例:
Code Block language go func ExampleSize() { // init var ( fileName = "gfile_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
- 说明:获取路径大小,并格式化成硬盘容量
格式:
Code Block language go func SizeFormat(path string) string
示例:
Code Block language go func ExampleSizeFormat() { // init var ( fileName = "gfile_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
- 说明:获取给定路径容量大小,并格式化人类易读的硬盘容量格式
格式:
Code Block language go func ReadableSize(path string) string
示例:
Code Block language go func ExampleReadableSize() { // init var ( fileName = "gfile_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
- 说明:硬盘容量大小字符串转换为大小整形
格式:
Code Block language go func StrToSize(sizeStr string) int64
示例:
Code Block language go func ExampleStrToSize() { size := gfile.StrToSize("100MB") fmt.Println(size) // Output: // 104857600 }
FormatSize
- 说明:大小整形转换为硬盘容量大小字符串`K、m、g、t、p、e、b`
格式:
Code Block language go func FormatSize(raw int64) string
示例:
Code Block language go func ExampleFormatSize() { sizeStr := gfile.FormatSize(104857600) fmt.Println(sizeStr) sizeStr0 := gfile.FormatSize(1024) fmt.Println(sizeStr0) sizeStr1 := gfile.FormatSize(999999999999999999) fmt.Println(sizeStr1
- 说明:获取路径大小,不进行格式化
示例:
Code Block language go 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
100.00M // 1.00K // 888.18P }
文件排序
SortFiles
- 说明:排序多个路径,按首字母进行排序,数字优先。
格式:
说明:获取路径大小,并格式化成硬盘容量Code Block language go func SortFiles(files []string) []string
示例:
Code Block language go func ExampleSizeFormatExampleSortFiles() { // init var (files := []string{ fileName = "gflie_example"/aaa/bbb/ccc.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
- 说明:获取给定路径容量大小,并格式化人类易读的硬盘容量格式
示例:
Code Block language go 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"/aaa/bbb/", "/aaa/", "/aaa", "/aaa/ccc/ddd.txt", "/bbb", "/0123", "/ddd", "/ccc", } sortOut := gfile.SortFiles(files) fmt.Println(gfile.ReadableSize(tempFile)sortOut) // Output: // [/0123 /aaa /aaa/ /aaa/bbb/ 20.00B }
StrToSize
/aaa/bbb/ccc.txt /aaa/ccc/ddd.txt /bbb /ccc /ddd] }
文件检索
Search
- 说明:在指定目录(默认包含当前目录、运行目录、主函数目录;不会递归子目录)中搜索文件并返回真实路径。
格式:
- 说明:硬盘容量大小字符串转换为大小整形 示例:
Code Block language go func
ExampleStrToSizeSearch(
) {
size := gfile.StrToSize("100MB")
fmt.Println(size)
// Output:
// 104857600
}
FormatSize
name string, prioritySearchPaths ...string) (realPath string, err error)
- 说明:大小整形转换为硬盘容量大小字符串`K、m、g、t、p、e、b`
示例:
Code Block language go func ExampleFormatSizeExampleSearch() { // init sizeStr :var ( fileName = "gfile.FormatSize(104857600) fmt.Println(sizeStr) sizeStr0 :_example.txt" tempDir = gfile.TempDir("gfile_example_search") tempFile = gfile.FormatSize(1024) fmt.Println(sizeStr0) sizeStr1Join(tempDir, fileName) ) // write contents gfile.PutContents(tempFile, "goframe example content") // search file realPath, _ := gfile.FormatSize(999999999999999999Search(fileName, tempDir) fmt.Println(sizeStr1(gfile.Basename(realPath)) // Output: // 100.00M // 1.00K // 888.18P }
文件排序
SortFiles
gfile_example.txt }
目录扫描
ScanDir
- 说明:扫描指定目录,可扫描文件或目录,支持递归扫描。
格式:
- 说明:排序多个路径,按首字母进行排序,数字优先。 示例:
Code Block language go 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
示例:
Code Block | ||
---|---|---|
| ||
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(path string, pattern string, recursive ...bool) ([]string, error)
示例:
Code Block language go func ExampleScanDir() { // init var ( fileName = "gfile_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: // gfile_example.txt // sub_dir // gfile_example.txt }
ScanDirFile
- 说明:扫描指定目录的文件,支持递归扫描
格式:
Code Block language go func ScanDirFile(path string, pattern string, recursive ...bool) ([]string, error)
目录扫描
ScanDir
- 说明:扫描指定目录,可扫描文件或目录,支持递归扫描。
示例:
Code Block language go func ExampleScanDirExampleScanDirFile() { // init var ( fileName = "gfliegfile_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.ScanDirScanDirFile(tempDir, "*.txt", true) for _, v := range list { fmt.Println(gfile.Basename(v)) } // Output: // gflie_example.txt // sub_dir // gflie_example.txt }
ScanDirFile
// gfile_example.txt // gfile_example.txt }
ScanDirFunc
- 说明:扫描指定目录(自定义过滤方法),可扫描文件或目录,支持递归扫描
格式:
Code Block language go func ScanDirFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error)
- 说明:扫描指定目录的文件,支持递归扫描
示例:
Code Block language go func ExampleScanDirFileExampleScanDirFunc() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_scan_dir_filefunc") 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.ScanDirFileScanDirFunc(tempDir, "*", true, func(path string) string { // ignores some files if gfile.txt", trueBasename(path) == "gfile_example.txt" { return "" } return path }) for _, v := range list { fmt.Println(gfile.Basename(v)) } // Output: // gflie_example.txt // gflie_example.txt }
ScanDirFunc
sub_dir }
ScanDirFileFunc
- 说明:扫描指定目录的文件(自定义过滤方法),支持递归扫描。
格式:
说明:扫描指定目录(自定义过滤方法),可扫描文件或目录,支持递归扫描Code Block language go func ScanDirFileFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error)
示例:
Code Block language go func ExampleScanDirFuncExampleScanDirFileFunc() { // init var ( fileName = "gfliegfile_example.txt" tempDir = gfile.TempDir("gfile_example_scan_dir_file_func") tempFiletempFile = gfile.Join(tempDir, fileName) fileName1 = "gfile_example_ignores.txt" tempFile1 = gfile.Join(tempDir, fileNamefileName1) 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.ScanDirFuncScanDirFileFunc(tempDir, "*.txt", true, func(path string) string { // ignores some files if gfile.Basename(path) == "gfliegfile_example_ignores.txt" { return "" } return path }) for _, v := range list { fmt.Println(gfile.Basename(v)) } // Output: // sub_dir }
ScanDirFileFunc
gfile_example.txt // gfile_example.txt }
常用目录
Pwd
- 说明:获取当前工作路径。
格式:
- 说明:扫描指定目录的文件(自定义过滤方法),支持递归扫描。 示例:
Code Block language go func Pwd() string
示例:
Code Block language go func ExamplePwd() { // Get absolute path of current working directory. fmt.Println(gfile.Pwd()) // May Output: // xxx/gf/os/gfile }
Home
- 说明:获取运行用户的主目录
格式:
Code Block language go func Home(names ...string) (string, error)
示例:
Code Block language go func ExampleHome() { // user's home directory homePath, _ := gfile.Home() fmt.Println(homePathExampleScanDirFileFunc() { // 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)) } May Output: // C:\Users\hailaz }
Temp
说明:获取拼接系统临时路径后的绝对地址。
格式:
Code Block language go func Temp(names ...string) string
示例:
Code Block language go func ExampleTempDir() { // init var ( fileName = "gfile_example_basic_dir" ) // fetch an absolute representation of path. path := gfile.Temp(fileName) fmt.Println(path) // Output: //
gflie_example.txt
/tmp/
gfliegfile_example
.txt_basic_dir }
常用目录
Home
SelfPath
说明:获取当前运行程序的绝对路径。
格式:
说明:获取运行用户的主目录Code Block language go func SelfPath() string
示例:
Code Block language go func
ExampleHomeExampleSelfPath() { //
user's home directory
homePath, _ := gfile.Home()Get absolute file path of current running process fmt.Println(
homePathgfile.SelfPath()) // May Output: //
C:\Users\hailaz
}
TempDir
xxx/___github_com_gogf_gf_v2_os_gfile__ExampleSelfPath }
类型判断
IsDir
- 说明:检查给定的路径是否是文件夹。
格式:
说明:获取拼接系统临时路径后的绝对地址。Code Block language go func IsDir(path string) bool
示例:
Code Block language go func ExampleTempDirExampleIsDir() { // init var ( fileNamepath = gfile.TempDir("gfile_example_basic_dir" ) // fetch an absolute representation of path. path : filePath = gfile.TempDir(fileName) fmt.Println(path) // Output: // /tmp/Join(gfile.TempDir("gfile_example_basic_dir }
Pwd
- 说明:获取当前工作路径。
示例:
Code Block language go func ExamplePwd() {"), "file1") ) // GetChecks absolutewhether pathgiven of`path` current workinga directory. fmt.Println(gfile.PwdIsDir()) // May Output: // xxx/gf/os/gfile }
SelfPath
说明:获取当前运行程序的绝对路径。
示例:
Code Block language go func ExampleSelfPath() { // Get absolute file path of current running process path)) fmt.Println(gfile.SelfPathIsDir(filePath)) // May Output: // xxx/___github_com_gogf_gf_v2_os_gfile__ExampleSelfPath }
文件/目录操作
Copy
true // false }
IsFile
- 说明:检查给定的路径是否是文件。
格式:
说明:支持复制文件或目录Code Block language go func IsFile(path string) bool
示例:
Code Block language go func
ExampleCopyExampleIsFile() { // init var (
srcFileNamefilePath =
"gflie_example.txt"gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
srcTempDirdirPath = gfile.TempDir("gfile_example_
copybasic_
srcdir")
srcTempFile = gfile.Join(srcTempDir, srcFileName)
//
copy file
dstFileName = "gflie_example_copy.txt"
dstTempFile = gfile.Join(srcTempDir, dstFileName)
// copy dir
dstTempDir = gfile.TempDir("gfile_example_copy_dst")
)
// write contents
gfile.PutContents(srcTempFile, "goframe example copy")
// copy file
gfile.Copy(srcTempFile, dstTempFileChecks 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
说明:检查给定的路径是否可读。
格式:
Code Block language go func IsReadable(path string) bool
示例:
Code Block language go func ExampleIsReadable() { // init var ( path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log" ) // Checks
readwhether
contentsgiven
after`path`
copyis
filereadable. fmt.Println(gfile.
GetContentsIsReadable(
dstTempFilepath)) //
copy dir
gfile.Copy(srcTempDir, Output: // true }
IsWritable
说明:检查指定路径是否可写,如果路径是目录,则会创建临时文件检查是否可写,如果是文件则判断是否可以打开
格式:
Code Block language go func IsWritable(path string) bool
示例:
Code Block language go func ExampleIsWritable() {
dstTempDir)
//
list copy dir file
fList, _ := gfile.ScanDir(dstTempDir, "*", false)
for _, v := range fList {
init var ( path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log" ) // Checks whether given `path` is writable. fmt.Println(gfile.
BasenameIsWritable(
vpath))
}// Output: //
goframe example copy
// gflie_example.txt
// gflie_example_copy.txt
}
Mkdir
true }
Chmod
说明:使用指定的权限,更改指定路径的文件权限。
格式:
Code Block language go func Chmod(path string, mode os.FileMode) error
- 说明:创建文件夹,支持递归创建(建议采用绝对路径),创建后的文件夹权限为:
drwxr-xr-x
。 示例:
Code Block language go func ExampleMkdirExampleChmod() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Creates directory gfile.Mkdir Get a FileInfo describing the named file. stat, err := gfile.Stat(path) //if Checkerr if!= directorynil exists{ fmt.Println(gfileerr.IsDirError(path)) // Output:} // true }
Create
- 说明:创建文件/文件夹,如果传入的路径中的文件夹不存在,则会自动创建文件夹以及文件,其中创建的文件权限为
-rw-r–r–
。 - 注意:如果需要创建文件的已存在,则会清空该文件的内容!
示例:
Code Block language go func ExampleCreate() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 50) ) // Check whether the file exists isFile := gfile.IsFile(path) fmt.Println(isFileShow original mode fmt.Println(stat.Mode()) // Change file model gfile.Chmod(path, gfile.DefaultPermCopy) // Get a FileInfo describing the named file. stat, _ = gfile.Stat(path) // Show the modified mode fmt.Println(stat.Mode()) // Creates file with given `path` recursively fileHandle, _ := gfile.Create(path) defer fileHandle.Close() // Write some content to file n, _ := fileHandle.WriteString("hello goframe") // Check whether the file exists isFile = gfile.IsFile(path) fmt.Println(isFile) // Reset file uintptr unix.Seek(int(fileHandle.Fd()), 0, 0) // Reads len(b) bytes from the File fileHandle.Read(dataByte) fmt.Println(string(dataByte[:n]Output: // -rw-r--r-- // -rwxrwxrwx }
文件/目录操作
Mkdir
- 说明:创建文件夹,支持递归创建(建议采用绝对路径),创建后的文件夹权限为:
drwxr-xr-x
。 格式:
Code Block language go func Mkdir(path string) error
示例:
Code Block language go func ExampleMkdir() { // init var ( path = gfile.TempDir("gfile_example_basic_dir") ) // Creates directory gfile.Mkdir(path) // Check if directory exists fmt.Println(gfile.IsDir(path)) // Output: // false // true // hello goframe }
Open
true }
Create
- 说明:创建文件/文件夹,如果传入的路径中的文件夹不存在,则会自动创建文件夹以及文件,其中创建的文件权限为
-rw-r–r–
。 - 注意:如果需要创建文件的已存在,则会清空该文件的内容!
格式:
说明:以只读的方式打开文件/文件夹。Code Block language go func Create(path string) (*os.File, error)
示例:
Code Block language go func ExampleOpenExampleCreate() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 4096) ) 50) ) // Check whether the file exists isFile := gfile.IsFile(path) fmt.Println(isFile) // Creates file with given `path` recursively fileHandle, _ := gfile.Create(path) defer fileHandle.Close() // Open file or directory with READONLY model file, _ :Write some content to file n, _ := fileHandle.WriteString("hello goframe") // Check whether the file exists isFile = gfile.OpenIsFile(path) defer filefmt.ClosePrintln(isFile) // ReadReset file datauintptr n, _ := fileunix.Seek(int(fileHandle.Fd()), 0, 0) // Reads len(b) bytes from the File fileHandle.Read(dataByte) fmt.Println(string(dataByte[:n])) // Output: // false // true // hello goframe }
OpenFile
Open
- 说明:以只读的方式打开文件/文件夹。
格式:
说明:以指定`flag`以及`perm`的方式打开文件/文件夹。Code Block language go func Open(path string) (*os.File, error)
示例:
Code Block language go func ExampleOpenFileExampleOpen() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 4096) ) // Opens file/directory with custom `flag` and `perm` // Create if file does not exist,it is created in a readable and writable mode,prem 0777 openFile, _ := gfile.OpenFile(path, os.O_CREATE|os.O_RDWR, gfile.DefaultPermCopy) defer openFile.Close() // Write some content to file writeLength"file1") dataByte = make([]byte, 4096) ) // Open file or directory with READONLY model file, _ := openFilegfile.WriteString("hello goframe test open file") fmt.Println(writeLengthOpen(path) defer file.Close() // Read data unix.Seek(int(openFile.Fd()), 0, 0) n, _ := openFilefile.Read(dataByte) fmt.Println(string(dataByte[:n])) // Output: // 28 // hello goframe test open file }
OpenWithFalg
// Output: // hello goframe }
OpenFile
- 说明:以指定`flag`以及`perm`的方式打开文件/文件夹。
格式:
说明:以指定`flag`的方式打开文件/文件夹。Code Block language go func OpenFile(path string, flag int, perm os.FileMode) (*os.File, error)
示例:
Code Block language go func ExampleOpenWithFlagExampleOpenFile() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 4096) ) // Opens file/directory with custom `flag` and `perm` // Create if file does not exist,it is created in a readable and writable mode with default `perm` is 0666,prem 0777 openFile, _ := gfile.OpenWithFlagOpenFile(path, os.O_CREATE|os.O_RDWR, gfile.DefaultPermCopy) defer openFile.Close() // Write some content to file writeLength, _ := openFile.WriteString("hello goframe test open file with flag") fmt.Println(writeLength) // Read data unix.Seek(int(openFile.Fd()), 0, 0) n, _ := openFile.Read(dataByte) fmt.Println(string(dataByte[:n])) // Output: // 3828 // hello goframe test open file with flag }
OpenWithFalgPerm
}
OpenWithFalg
- 说明:以指定`flag`的方式打开文件/文件夹。
格式:
说明:以指定`flag`以及`perm`的方式打开文件/文件夹。Code Block language go func OpenWithFlag(path string, flag int) (*os.File, error)
示例:
Code Block language go func ExampleOpenWithFlagPermExampleOpenWithFlag() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 4096) ) // Opens file/directory with custom `flag` and `perm` // Create if file does not exist,it is created in a readable and writable mode with default `perm` is 07770666 openFile, _ := gfile.OpenWithFlagPermOpenWithFlag(path, os.O_CREATE|os.O_RDWR, gfile.DefaultPermCopy) defer openFile.Close()_RDWR) defer openFile.Close() // Write some content to file writeLength, _ := openFile.WriteString("hello goframe test open file with flag") fmt.Println(writeLength) // Read data unix.Seek(int(openFile.Fd()), 0, 0) n, _ := openFile.Read(dataByte) fmt.Println(string(dataByte[:n])) // Write some content to file writeLength, _ := openFile.WriteString("Output: // 38 // hello goframe test open file with flag }
OpenWithFalgPerm
- 说明:以指定`flag`以及`perm`的方式打开文件/文件夹。
格式:
Code Block language go func OpenWithFlagPerm(path string, flag int, perm os.FileMode) (*os.File, error)
示例:
Code Block language go func ExampleOpenWithFlagPerm() { and perm") fmt.Println(writeLength) // Read data unix.Seek(int(openFile.Fd()), 0, 0) n, _ := openFile.Read(dataByte) fmt.Println(string(dataByte[:n])init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dataByte = make([]byte, 4096) ) // Output: Opens file/directory with custom `flag` and `perm` // 38 // hello goframe test open file with flag }
Stat
- 说明:获取给定路径的文件详情。
示例:
Code Block language go func ExampleStat() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Get a FileInfo describing the named file. stat, _ := gfile.Stat(pathCreate if file does not exist,it is created in a readable and writable mode with `perm` is 0777 openFile, _ := gfile.OpenWithFlagPerm(path, os.O_CREATE|os.O_RDWR, gfile.DefaultPermCopy) defer openFile.Close() // Write some content to file writeLength, _ := openFile.WriteString("hello goframe test open file with flag and perm") fmt.Println(stat.Name()) fmt.Println(stat.IsDir()) fmt.Println(stat.Mode()) fmt.Println(stat.ModTime()) fmt.Println(stat.Size())writeLength) // Read data unix.Seek(int(openFile.Fd()), 0, 0) n, _ := openFile.Read(dataByte) fmt.Println(stat.Sys(string(dataByte[:n])) // May Output: // file1 // false // -rwxr-xr-xOutput: // 2021-12-02 11:01:27.261441694 +0800 CST38 // &{16777220hello 33261goframe 1test 8597857090open 501file 20 0 [0 0 0 0] {1638414088 192363490} {1638414087 261441694} {1638414087 261441694} {1638413480 485068275} 38 8 4096 0 0 0 [0 0]} }
Move
with flag }
Stat
- 说明:获取给定路径的文件详情。
格式:
Code Block language go func Stat(path string) (os.FileInfo, error)
说明:将
src
重命名为dst
。- 注意:如果
dst
已经存在并且是文件,将会被替换造成数据丢失! 示例:
Code Block language go func ExampleMoveExampleStat() { // init var ( srcPathpath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dstPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file2") ) // Check is file fmt.Println(gfile.IsFile(dstPath)) // Moves `src` to `dst` path. // If `dst` already exists and is not a directory, it'll be replaced. gfile.Move(srcPath, dstPath) fmt.Println(gfile.IsFile(srcPath)) fmt.Println(gfile.IsFile(dstPath)) // Output: // false // false // true }
Rename
) // Get a FileInfo describing the named file. stat, _ := gfile.Stat(path) fmt.Println(stat.Name()) fmt.Println(stat.IsDir()) fmt.Println(stat.Mode()) fmt.Println(stat.ModTime()) fmt.Println(stat.Size()) fmt.Println(stat.Sys()) // May Output: // file1 // false // -rwxr-xr-x // 2021-12-02 11:01:27.261441694 +0800 CST // &{16777220 33261 1 8597857090 501 20 0 [0 0 0 0] {1638414088 192363490} {1638414087 261441694} {1638414087 261441694} {1638413480 485068275} 38 8 4096 0 0 0 [0 0]} }
Copy
- 说明:支持复制文件或目录
格式:
Code Block language go func Copy(src string, dst string) error
示例:
Code Block language go func ExampleCopy() { // init var ( srcFileName = "gfile_example.txt" srcTempDir = gfile.TempDir("gfile_example_copy_src") srcTempFile = gfile.Join(srcTempDir, srcFileName) // copy file dstFileName = "gfile_example_copy.txt" dstTempFile = gfile.Join(srcTempDir, dstFileName) // copy dir dstTempDir = gfile.
说明:
Move
的别名,将src
重命名为dst
。- 注意:如果
dst
已经存在并且是文件,将会被替换造成数据丢失! TempDir("gfile_example_
basiccopy_
dirdst") ) // write contents gfile.PutContents(srcTempFile, "
file2goframe example copy")
dstPath//
=copy file gfile.
Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
)Copy(srcTempFile, dstTempFile) // read contents
Checkafter
iscopy file fmt.Println(gfile.
IsFileGetContents(
dstPathdstTempFile)) //
renames (moves) `src` to `dst` path.
// If `dst` already exists and is not a directory, it'll be replaced.
gfile.Rename(srcPath, dstPath)
copy dir gfile.Copy(srcTempDir, dstTempDir) // list copy dir file fList, _ := gfile.ScanDir(dstTempDir, "*", false) for _, v := range fList { fmt.Println(gfile.
IsFileBasename(
srcPathv))
fmt.Println(gfile.IsFile(dstPath))} // Output: //
falsegoframe example copy //
falsegfile_example.txt //
true
}
示例:
language | go |
---|
Remove
gfile_example_copy.txt }
CopyFile
- 说明:复制文件
格式:
说明:删除给定路径的文件或文件夹。Code Block language go func CopyFile(src, dst string) (err error)
示例:
Code Block language go func
ExampleRemoveExampleCopyFile() { // init var (
pathsrcFileName = "gfile
.Join(_example.txt" srcTempDir = gfile.TempDir("gfile_example_
basiccopy_
dirsrc") srcTempFile = gfile.Join(srcTempDir,
"file1"srcFileName)
)
//
Checks whether given `path` a file, which means it's not a directory.
fmt.Println(gfile.IsFile(path)copy file dstFileName = "gfile_example_copy.txt" dstTempFile = gfile.Join(srcTempDir, dstFileName) ) // write contents gfile.PutContents(srcTempFile, "goframe example copy") //
deletes allcopy file
/directory with `path` parameter.gfile.
Remove(pathCopyFile(srcTempFile, dstTempFile) //
Check againread contents after copy file fmt.Println(gfile.
IsFileGetContents(
pathdstTempFile)) // Output: //
true
// false
}
IsEmpty
goframe example copy }
CopyDir
- 说明:支持复制文件或目录
格式:
说明:检查给定的路径,如果是文件夹则检查是否包含文件,如果是文件则检查文件大小是否为空。Code Block language go func CopyDir(src string, dst string) error
示例:
Code Block language go func ExampleCopyDir() { // init var ( srcTempDir = gfile.TempDir("gfile_example_copy_src") // copy file dstFileName = "gfile_example_copy.txt" dstTempFile = gfile.Join(srcTempDir, dstFileName) // copy dir dstTempDir = gfile.TempDir("gfile_example_
basiccopy_
dirdst")
, "file1"))
//
Checkread
whethercontents
theafter
`path`copy
is emptyfile fmt.Println(gfile.
IsEmptyGetContents(
pathdstTempFile)) //
Truncatecopy dir gfile.CopyDir(srcTempDir, dstTempDir) // list copy dir file fList, _ := gfile.
Truncate(pathScanDir(dstTempDir, "*",
0false)
for
Check_,
whetherv
the:=
`path`range
isfList
empty{ fmt.Println(gfile.
IsEmptyBasename(
pathv)) } // Output: //
falsegfile_example.txt //
truegfile_example_copy.txt }
Chmod
Move
说明:将
src
重命名为dst
。- 注意:如果
dst
已经存在并且是文件,将会被替换造成数据丢失! 格式:
说明:使用指定的权限,更改指定路径的文件权限。Code Block language go func Move(src string, dst string) error
示例:
Code Block language go func ExampleChmod() { // init var ( path ExampleMove() { // init var ( srcPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") dstPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1file2") ) // Check is file fmt.Println(gfile.IsFile(dstPath)) // Get aMoves FileInfo`src` describingto the`dst` named filepath. stat, err := gfile.Stat(path) if err != nil { // If `dst` already exists and is not a directory, it'll be replaced. gfile.Move(srcPath, dstPath) fmt.Println(errgfile.ErrorIsFile(srcPath)) } // Show original mode fmt.Println(statgfile.ModeIsFile(dstPath)) // Change file model gfile.Chmod(path, gfile.DefaultPermCopy) Output: // false // false // true }
Rename
说明:
Move
的别名,将src
重命名为dst
。- 注意:如果
dst
已经存在并且是文件,将会被替换造成数据丢失! 格式:
Code Block language go func Rename(src string, dst string) error
示例:
Code Block language go func ExampleRename() { // init var ( srcPathGet a FileInfo describing the named file. stat, _ = gfile.Stat(pathJoin(gfile.TempDir("gfile_example_basic_dir"), "file2") // dstPath Show the modified mode fmt.Println(stat.Mode()) = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Output: // -rw-r--r-- // -rwxrwxrwx }
路径操作
Join
- 说明:将多个字符串路径通过`/`进行连接。
示例:
Code Block language go func ExampleJoin() { Check is file fmt.Println(gfile.IsFile(dstPath)) // init varrenames ( dirPath = gfile.TempDir("gfile_example_basic_dir") filePath = "file1" ) // Joins string array paths with file separator of current system. joinString := gfile.Join(dirPath, filePathmoves) `src` to `dst` path. // If `dst` already exists and is not a directory, it'll be replaced. gfile.Rename(srcPath, dstPath) fmt.Println(joinStringgfile.IsFile(srcPath)) fmt.Println(gfile.IsFile(dstPath)) // Output:: // false // false // /tmp/gfile_example_basic_dir/file1 }
Exists
true }
Remove
说明:删除给定路径的文件或文件夹。
格式:
说明:检查给定的路径是否存在 。Code Block language go func Remove(path string) error
示例:
Code Block language go func ExampleExistsExampleRemove() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") )) ) // Checks whether given `path` a file, which means it's not a directory. fmt.Println(gfile.IsFile(path)) // deletes all file/directory with `path` parameter. gfile.Remove(path) // Checks whether given `path` exist.Check again fmt.Println(gfile.ExistsIsFile(path)) // Output: // true // false }
IsDir
IsEmpty
说明:检查给定的路径,如果是文件夹则检查是否包含文件,如果是文件则检查文件大小是否为空。
格式:
说明:检查给定的路径是否是文件夹。Code Block language go func IsEmpty(path string) bool
示例:
Code Block language go func ExampleIsDirExampleIsEmpty() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") filePath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") )) // Check whether the `path` is empty fmt.Println(gfile.IsEmpty(path)) // Truncate file gfile.Truncate(path, 0) // ChecksCheck whether giventhe `path` ais directory.empty fmt.Println(gfile.IsDirIsEmpty(path)) fmt.Println(gfile.IsDir(filePath)) // Output: // truefalse // falsetrue }
Chdir
DirNames
说明:获取给定路径下的文件列表,返回的是一个切片。
格式:
说明:使用给定的路径,更改当前的工作路径。Code Block language go func DirNames(path string) ([]string, error)
示例:
Code Block language go func ExampleChdirExampleDirNames() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Get current working directory fmt.Println(gfile.Pwd()) // Changes the current working directory to the named directory. gfile.Chdir(path) // Get current working directory sub-file names of given directory `path`. dirNames, _ := gfile.DirNames(path) fmt.Println(gfile.Pwd(dirNames)) // May Output: // xxx/gf/os/gfile // /tmp/gfile_example_basic_dir/file1 }
IsFile
[file1] }
Glob
说明:模糊搜索给定路径下的文件列表,支持正则,第二个参数控制返回的结果是否带上绝对路径。
格式:
说明:检查给定的路径是否是文件。Code Block language go func Glob(pattern string, onlyNames ...bool) ([]string, error)
示例:
Code Block language go func ExampleIsFileExampleGlob() { // init var ( filePath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") var ( dirPath path = gfile.TempDir("gfilePwd() + gfile.Separator + "*_example_basic_dirtest.go") ) // Checks whether Get sub-file names of given directory `path` a. // Only show file name matchNames, which_ means it's not a directory.:= gfile.Glob(path, true) fmt.Println(matchNames) // Show full path of the file matchNames, _ = gfile.IsFile(filePath))Glob(path, false) fmt.Println(gfile.IsFile(dirPath)(matchNames) // May Output: // true[gfile_z_example_basic_test.go] // false }
DirNames
[xxx/gf/os/gfile/gfile_z_example_basic_test.go] }
Exists
- 说明:检查给定的路径是否存在 。
格式:
说明:获取给定路径下的文件列表,返回的是一个切片。Code Block language go func Exists(path string) bool
示例:
Code Block language go func ExampleDirNamesExampleExists() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Get sub-file names of Checks whether given directory`path` `path`exist. dirNames, _ := fmt.Println(gfile.DirNamesExists(path) fmt.Println(dirNames) // May Output: // [file1]true }
Glob
Chdir
- 说明:使用给定的路径,更改当前的工作路径。
格式:
说明:模糊搜索给定路径下的文件列表,支持正则,第二个参数控制返回的结果是否带上绝对路径。Code Block language go func Chdir(dir string) error
示例:
Code Block language go func ExampleGlobExampleChdir() { // init var ( path = gfile.PwdJoin() + gfile.Separator + "*TempDir("gfile_example_basic_test.go"dir"), "file1") ) // Get sub-filecurrent namesworking of given directory `path`. // Only show file name matchNames, _ := gfile.Glob(path, true) fmt.Println(matchNames fmt.Println(gfile.Pwd()) // ShowChanges fullthe pathcurrent ofworking the file matchNames, _ = gfile.Glob(path, falsedirectory to the named directory. gfile.Chdir(path) // Get current working directory fmt.Println(gfile.Pwd(matchNames)) // May Output: // [gfile_z_example_basic_test.go]xxx/gf/os/gfile // [xxx/gf/ostmp/gfile/gfile_z_example_basic_test.go] }
IsReadable
dir/file1 }
路径操作
Join
- 说明:将多个字符串路径通过`/`进行连接。
格式:
说明:检查给定的路径是否可读。Code Block language go func Join(paths ...string) string
示例:
Code Block language go func ExampleIsReadableExampleJoin() { // init var ( pathdirPath = gfile.Pwd() + gfile.Separator + "testdata/readline/file.logTempDir("gfile_example_basic_dir") filePath = "file1" ) // Checks whether given `path` is readable. Joins string array paths with file separator of current system. joinString := gfile.Join(dirPath, filePath) fmt.Println(gfile.IsReadable(path)joinString) // Output: // true/tmp/gfile_example_basic_dir/file1 }
Abs
说明:返回路径的绝对路径。
格式:
Code Block language go func Abs(path string) string
示例:
Code Block language go func ExampleAbs() { // init var ( path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Get an absolute representation of path. fmt.Println(gfile.Abs(path)) // Output: // /tmp/gfile_example_basic_dir/file1 }
RealPath
RealPath
说明:获取给定路径的绝对路径地址。
注意:如果文件不存在则返回空。
格式:
说明:获取给定路径的绝对路径地址,如果文件不存在则返回空。Code Block language go func RealPath(path string) string
示例:
Code Block language go func ExampleRealPath() { // init var ( realPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1") worryPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "worryFile") ) // fetch an absolute representation of path. fmt.Println(gfile.RealPath(realPath)) fmt.Println(gfile.RealPath(worryPath)) // Output: // /tmp/gfile_example_basic_dir/file1 // }
SelfName
_basic_dir/file1 // }
SelfName
说明:获取当前运行程序的名称。
格式:
Code Block language go func SelfName() string
示例:
Code Block language go func ExampleSelfName() { // Get file name of current running process fmt.Println(gfile.SelfName()) // May Output: // ___github_com_gogf_gf_v2_os_gfile__ExampleSelfName }
Basename
说明:获取给定路径中的最后一个元素,包含扩展名。
格式:
说明:获取当前运行程序的名称。Code Block language go func Basename(path string) string
示例:
Code Block language go func ExampleSelfNameExampleBasename() { // init var ( path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log" ) // Get the filelast nameelement of current running processpath, which contains file extension. fmt.Println(gfile.SelfNameBasename(path)) // May Output: // ___github_com_gogf_gf_v2_os_gfile__ExampleSelfName }
Basename
// file.log }
Name
说明:获取给定路径中的最后一个元素,不包含扩展名。
格式:
说明:获取给定路径中的最后一个元素,包含扩展名。Code Block language go func Name(path string) string
示例:
Code Block language go func ExampleBasenameExampleName() { // init var ( path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log" ) // Get the last element of path, which containswithout file extension. fmt.Println(gfile.BasenameName(path)) // Output: // file.log }
Name
Dir
说明:获取给定路径的目录部分,排除最后的元素。
格式:
说明:获取给定路径中的最后一个元素,不包含扩展名。Code Block language go func Dir(path string) string
示例:
Code Block language go func ExampleNameExampleDir() { // init var ( path = gfile.PwdJoin() + gfile.Separator + "testdata/readline/file.log"TempDir("gfile_example_basic_dir"), "file1") ) // Get all but the last element of of path, typically the path without file extension's directory. fmt.Println(gfile.NameDir(path)) // Output: // file }
Dir
/tmp/gfile_example_basic_dir }
Ext
说明:获取给定路径的扩展名,包含`.`。
格式:
说明:获取给定路径的目录部分,排除最后的元素。Code Block language go func Ext(path string) string
示例:
Code Block language go func ExampleDirExampleExt() { // init var ( path = gfile.JoinPwd(gfile.TempDir("gfile_example_basic_dir"), "file1")) + gfile.Separator + "testdata/readline/file.log" ) // Get all but the lastfile elementname ofextension path,used typicallyby the path's directory. fmt.Println(gfile.DirExt(path)) // Output: // /tmp/gfile_example_basic_dir.log }
Ext
ExtName
说明:获取给定路径的扩展名,包含`说明:获取给定路径的扩展名,不包含`.`。
格式:
Code Block language go func ExtName(path string) string
示例:
Code Block language go func ExampleExtExampleExtName() { // init var ( path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log" ) // Get the file name extension used by path. by path but the result does not contains symbol '.'. fmt.Println(gfile.ExtName(path)) // Output: // log }
MainPkgPath
说明:获取main文件(主入口)所在的绝对路径,。
- 注意:
该方法仅在开发环境中可用,同时仅在源代码开发环境中有效,build二进制后将显示源代码的路径地址。
第一次调用该方法时,如果处于异步的goroutine中,可能会无法获取主包的路径
格式:
Code Block language go func MainPkgPath() string
示例:
Code Block language go func Test() { fmt.Println("main pkg path on main :", gfile.ExtMainPkgPath(path)) //char Output::= make(chan int, 1) // .log }
ExtName
说明:获取给定路径的扩展名,不包含`.`。
示例:
Code Block language go func ExampleExtNamego func() { // init var ( fmt.Println("main pkg path on goroutine :", gfile.MainPkgPath()) pathchar = gfile.Pwd<- 1 }() + gfile.Separator + "testdata/readline/file.log" ) // Get the file name extension used by path but the result does not contains symbol '.'. fmt.Println(gfile.ExtName(path)) // Output: // log } select { case <-char: } // Output: // /xxx/xx/xxx/xx // /xxx/xx/xxx/xx } // 二进制包 $ ./testDemo main pkg path on main : /xxx/xx/xxx/xx main pkg path on goroutine : /xxx/xx/xxx/xx
Panel | ||
---|---|---|
| ||
|