Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

基本介绍

gfile模块是对文件操作的进一步封装,提供了常用的,简易的API来操作底层文件,隐藏了复杂的底层实现细节。文件管理组件提供了更加丰富的文件/目录操作能力。

使用方式

Code Block
languagego
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
    languagego
    func GetContents(path string) string

内容缓存

GetContentsWithCache

  • 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存


  • 示例:

    Code Block
    languagego
    func ExampleGetContentsWithCacheExampleGetContents() {
    	// init
    	var (
    		fileName = "gfliegfile_example.txt"
    		tempDir  = gfile.TempDir("gfile_example_cachecontent")
    		tempFile = gfile.Join(tempDir, fileName)
    	)
    
    	// write contents
    	gfile.PutContents(tempFile, "goframe example content")
    
    	// It reads and returns the file content with cache duration of one minute,as string.
    	// whichIt meansreturns itempty readsstring fromif cacheit afterfails thenreading, withoutfor anyexample, IOwith operationspermission withinor onIO minuteerror.
    	fmt.Println(gfile.GetContentsWithCacheGetContents(tempFile, time.Minute))
    
    	// write new contents will clear its cache
    	gfile.PutContents(tempFile, "newOutput:
    	// 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
    }

内容管理

GetContents

  • 
    }


GetContentsWithCache

  • 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存。
  • 格式: 

    Code Block
    languagego
    func GetContentsWithCache(path string, duration ...time.Duration) string


  • 示例:

    Code Block
    languagego
    func ExampleGetContentsWithCache() {
    	// init
    	var (
    		fileName = "gfile
  • 说明:指定路径文件字符串内容读取
  • 示例:

    Code Block
    languagego
    func ExampleGetContents() {
    	// init
    	var (
    		fileName = "gflie_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 string.with cache duration of one minute,
    	// Itwhich returnsmeans emptyit stringreads iffrom itcache failsafter reading,then forwithout example,any withIO permissionoperations orwithin IOon errorminute.
    	fmt.Println(gfile.GetContentsGetContentsWithCache(tempFile, time.Minute))
    
    	// Output:
    	// goframe example content
    }

GetBytes

  • 说明:指定路径文件字节内容读取
  • 示例:

    Code Block
    languagego
    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.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.GetBytesGetContentsWithCache(tempFile))
    
    	// May Output:
    	// [103goframe 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
    }

PutContents

  • example content
    	// new goframe example content
    }


GetBytesWithCache

  • 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存,返回[]byte。
  • 格式: 

    Code Block
    languagego
    func GetBytesWithCache(path string, duration ...time.Duration) []byte


  • 说明:设置指定路径文件字符串内容
  • 示例:

    Code Block
    languagego
    func ExamplePutContentsExampleGetBytesWithCache() {
    	// init
    	var (
    		fileName = "gfliegfile_example.txt"
    		tempDir  = gfile.TempDir("gfile_example_contentcache")
    		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.
    	write contents
    	gfile.PutContents(tempFile, "goframe example content")
    
    	// It read contents
    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.GetContentsGetBytesWithCache(tempFile, time.Minute))
    
    	// Output:
    	// write new contents will clear its cache
    	gfile.PutContents(tempFile, "new goframe example content
    }

PutBytes

  • 说明:设置指定路径文件字节内容
  • 示例:

    Code Block
    languagego
    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")There's some delay for cache clearing after file content change.
    	time.Sleep(time.Second * 1)
    
    	// read contents
    	fmt.Println(gfile.GetContentsGetBytesWithCache(tempFile))
    
    	// Output:
    	// goframe example content
    }

PutContentsAppend

  • 说明:添加字符串内容到指定路径文件
  • 示例:

    Code Block
    languagego
    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
    }
    • [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

    • 说明:读取指定路径文件内容,以字节形式返回。
    • 格式: 

      Code Block
      languagego
      func GetBytes(path string) []byte


    • 示例:

      Code Block
      languagego
      func ExampleGetBytes() {
      	// init
      	var (
      		fileName = "gfile

    PutBytesAppend

    • 说明:添加字节内容到指定路径文件
    • 示例:

      Code Block
      languagego
      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 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.GetContentsGetBytes(tempFile))
      
      	// Output:
      	// goframe example content
      	// goframe example content append
      }

    GetNextCharOffsetByPath

    •  [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
      languagego
      func GetBytesTilChar(reader io.ReaderAt, char byte, start int64) ([]byte, int64)


    • 示例:

      Code Block
      languagego
      func ExampleGetBytesTilChar() {
      	// initExampleGetNextCharOffsetByPath() {
      	// 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")
      
      	f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen)
      
      	// GetBytesTilChar readreturns the contents
      	index of the file as []byte
      	// until the next specified byte `char` position.
      	char, i := gfile.GetNextCharOffsetByPathGetBytesTilChar(tempFilef, 'f', 0)
      	fmt.Println(indexchar)
      
      		fmt.Println(i)
      
      	// Output:
      	// [103 111 102]
      	// 2
      }

    GetBytesTilCharByPath


    GetBytesByTwoOffsets

    • 说明:以指定的区间读取文件内容
    • 格式: 

      Code Block
      languagego
      func GetBytesByTwoOffsets(reader io.ReaderAt, start int64, end int64) []byte 
      说明:以某个字符定位截取指定长度的文件内容以字节形式返回


    • 示例:

      Code Block
      languagego
      func ExampleGetBytesTilCharByPathExampleGetBytesByTwoOffsets() {
      	// 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.GetBytesTilCharByPathf, _ := gfile.OpenWithFlagPerm(tempFile, 'f'os.O_RDONLY, 0)gfile.DefaultPermOpen)
      
      	// Output: GetBytesTilChar returns the contents of the file as []byte
      	// [103 until the next specified byte `char` position.
      	char := gfile.GetBytesByTwoOffsets(f, 0, 3)
      	fmt.Println(char)
      
      	// Output:
      	// [103 111 102] 2
      }

    GetBytesByTwoOffsetsByPath


    PutContents

    • 说明:往指定路径文件添加字符串内容。如果文件不存在将会递归的形式自动创建。
    • 格式: 

      Code Block
      languagego
      func putContents(path string, data []byte, flag int, perm os.FileMode) error
      说明:用两个偏移量截取指定文件的内容以字节形式返回


    • 示例:

      Code Block
      languagego
      func ExampleGetBytesByTwoOffsetsByPathExamplePutContents() {
      	// init
      	var (
      		fileName = "gfliegfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_content")
      		tempFile = gfile.Join(tempDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "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.GetBytesByTwoOffsetsByPathGetContents(tempFile, 0, 7))
      
      	// Output:
      	// [103goframe 111 102 114 97 109 101]
      }

    ReadLines

    • example content
      }


    PutBytes

    • 说明:以字节形式写入指定文件,如果文件不存在将会递归的形式自动创建
    • 格式: 

      Code Block
      languagego
      func PutBytes(path string, content []byte) error


    • 说明:以字符串形式逐行读取文件内容
    • 示例:

      Code Block
      languagego
      func ExampleReadLinesExamplePutBytes() {
      	// init
      	var (
      		fileName = "gfliegfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_content")
      		tempFile = gfile.Join(tempDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContentsPutBytes(tempFile, []byte("L1 goframe example content\nL2 goframe example content""))
      
      	// read contents
      	fmt.Println(gfile.ReadLines(tempFile, func(text string) error {
      		// Process each line
      		fmt.Println(text)
      		return nil
      	}GetContents(tempFile))
      
      	// Output:
      	// L1 goframe example content
      	// L2 goframe example content
      }

    ReadLinesBytes

    • }


    PutContentsAppend

    • 说明:追加字符串内容到指定文件,如果文件不存在将会递归的形式自动创建。
    • 格式: 

      Code Block
      languagego
      func PutContentsAppend(path string, content string) error
      说明:以字节形式逐行读取文件内容


    • 示例:

      Code Block
      languagego
      func ExampleReadLinesBytesExamplePutContentsAppend() {
      	// init
      	var (
      		fileName = "gfliegfile_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 {
      		// Process each line
      		fmt.Println(bytes)
      		return nil
      	}))
      
      	// 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:
      	// [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]
      }

    文件/目录复制

    Copy

    • example content
      	// goframe example content append content
      }


    PutBytesAppend

    • 说明:追加字节内容到指定文件。如果文件不存在将会递归的形式自动创建。
    • 格式: 

      Code Block
      languagego
      func PutBytesAppend(path string, content []byte) error


    • 示例:

      Code Block
      languagego
      func ExamplePutBytesAppend() {
      	// 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.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

    • 说明:从某个偏移量开始,获取文件中指定字符所在下标
    • 格式: 

      Code Block
      languagego
      func GetNextCharOffset(reader io.ReaderAt, char byte, start int64) int64


    • 示例:

      Code Block
      languagego
      func ExampleGetNextCharOffset() {
      	// 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")
      	
      	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

    • 说明:从某个偏移量开始,获取文件中指定字符所在下标
    • 格式: 

      Code Block
      languagego
      func GetNextCharOffsetByPath(path string, char byte, start int64) int64 


    • 示例:

      Code Block
      languagego
      func ExampleGetNextCharOffsetByPath() {
      	// 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
      	index := gfile.GetNextCharOffsetByPath(tempFile, 'f', 0)
      	fmt.Println(index)
      
      	// Output:
      	// 2
      }



    GetBytesTilCharByPath

    • 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
    • 格式: 

      Code Block
      languagego
      func GetBytesTilCharByPath(path string, char byte, start int64) ([]byte, int64) 


    • 示例:

      Code Block
      languagego
      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
      languagego
      func GetBytesByTwoOffsetsByPath(path string, start int64, end int64) []byte


    • 示例:

      Code Block
      languagego
      func ExampleGetBytesByTwoOffsetsByPath() {
      	// 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.GetBytesByTwoOffsetsByPath(tempFile, 0, 7))
      
      	// Output:
      	// [103 111 102 114 97 109 101]
      }


    ReadLines

    • 说明:以字符串形式逐行读取文件内容
    • 格式: 

      Code Block
      languagego
      func ReadLines(file string, callback func(text string) error) error


    • 示例:

      Code Block
      languagego
      func ExampleReadLines() {
      	// init
      	var (
      		fileName = "gfile_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

    • 说明:以字节形式逐行读取文件内容
    • 格式: 

      Code Block
      languagego
      func ReadLinesBytes(file string, callback func(bytes []byte) error) error 


    • 示例:

      Code Block
      languagego
      func ExampleReadLinesBytes() {
      	// init
      	var (
      		fileName = "gfile_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

    • 说明:裁剪文件为指定大小
    • 注意:如果给定文件路径是软链,将会修改源文件
    • 格式: 

      Code Block
      languagego
      func Truncate(path string, size int) error


    • 示例:

      Code Block
      languagego
      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
      languagego
      func ReplaceFile(search, replace, path string) error 


    • 示例:

      Code Block
      languagego
      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
      languagego
      func ReplaceFileFunc(f func(path, content string) string, path string) error


    • 示例:

      Code Block
      languagego
      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
      languagego
      func ReplaceDir(search, replace, path, pattern string, recursive ...bool) error


    • 示例:

      Code Block
      languagego
      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
      languagego
      func ReplaceDirFunc(f func(path, content string) string, path, pattern string, recursive ...bool) error


    • 示例:

      Code Block
      languagego
      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
      languagego
      func MTime(path string) time.Time 


    • 示例:

      Code Block
      languagego
      func ExampleMTime() {
      	t := gfile.MTime(gfile.TempDir())
      	fmt.Println(t)
      
      	// May Output:
      	// 2021-11-02 15:18:43.901141 +0800 CST
      }


    MTimestamp

    • 说明:获取路径修改时间戳(秒)
    • 格式: 

      Code Block
      languagego
      func MTimestamp(path string) int64


    • 示例:

      Code Block
      languagego
      func ExampleMTimestamp() {
      	t := gfile.MTimestamp(gfile.TempDir())
      	fmt.Println(t)
      
      	// May Output:
      	// 1635838398
      }


    MTimestampMilli

    • 说明:获取路径修改时间戳(毫秒)
    • 格式: 

      Code Block
      languagego
      func MTimestampMilli(path string) int64


    • 示例:

      Code Block
      languagego
      func ExampleMTimestampMilli() {
      	t := gfile.MTimestampMilli(gfile.TempDir())
      	fmt.Println(t)
      
      	// May Output:
      	// 1635838529330
      }


    文件大小

    Size

    • 说明:获取路径大小,不进行格式化
    • 格式: 

      Code Block
      languagego
      func Size(path string) int64 


    • 示例:

      Code Block
      languagego
      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
      languagego
      func SizeFormat(path string) string
      说明:支持复制文件或目录


    • 示例:

      Code Block
      languagego
      func ExampleCopyExampleSizeFormat() {
      	// init
      	var (
      		srcFileNamefileName = "gfliegfile_example.txt"
      		srcTempDirtempDir  = gfile.TempDir("gfile_example_copy_src")
      		srcTempFile = gfile.Join(srcTempDir, srcFileName)
      
      		// copy file
      size")
      		tempFile = gfile.Join(tempDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "0123456789")
      	fmt.Println(gfile.SizeFormat(tempFile))
      
      	// Output:
      	// 10.00B
      }


    ReadableSize

    • 说明:获取给定路径容量大小,并格式化人类易读的硬盘容量格式
    • 格式: 

      Code Block
      languagego
      func ReadableSize(path string) string


    • 示例:

      Code Block
      languagego
      func ExampleReadableSize() {
      	// init
      	var (
      		fileName = "gfile_example		dstFileName = "gflie_example_copy.txt"
      		dstTempFiletempDir = gfile.Join(srcTempDir, dstFileName)
      
      		// copy dir
      		dstTempDir = gfile.TempDir("gfile_example_copy_dstsize")
      	)
      
      	//tempFile write= contents
      	gfile.PutContentsJoin(srcTempFiletempDir, "goframe example copy")
      
      	// copy file
      	gfile.Copy(srcTempFile, dstTempFilefileName)
      	)
      
      	// readwrite contents after copy file
      	gfile.PutContents(tempFile, "01234567899876543210")
      	fmt.Println(gfile.GetContentsReadableSize(dstTempFiletempFile))
      
      	// copy dirOutput:
      	gfile.Copy(srcTempDir, dstTempDir)
      
      	// list copy dir file
      	fList, _ := gfile.ScanDir(dstTempDir, "*", false)
      	for _, v20.00B
      }


    StrToSize

    • 说明:硬盘容量大小字符串转换为大小整形
    • 格式: 

      Code Block
      languagego
      func StrToSize(sizeStr string) int64


    • 示例:

      Code Block
      languagego
      func ExampleStrToSize() {
      	size := gfile.StrToSize("100MB")
      	fmt.Println(size) := range fList {
      		fmt.Println(gfile.Basename(v))
      	}
      
      	// Output:
      	// goframe example copy
      	// gflie_example.txt
      	// gflie_example_copy.txt
      }

    主目录

    Home

    • 104857600
      }


    FormatSize

    • 说明:大小整形转换为硬盘容量大小字符串`K、m、g、t、p、e、b`
    • 格式: 

      Code Block
      languagego
      func FormatSize(raw int64) string
      说明:获取运行用户的主目录


    • 示例:

      Code Block
      languagego
      func ExampleHomeExampleFormatSize() {
      	// user's home directory
      	homePath, _sizeStr := gfile.FormatSize(104857600)
      	fmt.Println(sizeStr)
      	sizeStr0 := gfile.FormatSize(1024)
      	fmt.Println(sizeStr0)
      	sizeStr1 := gfile.HomeFormatSize(999999999999999999)
      	fmt.Println(homePathsizeStr1)
      
      	// May Output:
      	// 100.00M
      	// 1.00K
      	// C:\Users\hailaz888.18P
      }

    内容替换

    ReplaceFile


    文件排序

    SortFiles

    • 说明:排序多个路径,按首字母进行排序,数字优先。
    • 格式: 

      Code Block
      languagego
      func SortFiles(files []string) []string
      说明:替换指定文件的指定内容为新内容


    • 示例:

      Code Block
      languagego
      func ExampleReplaceFileExampleSortFiles() {
      	files := []string{
      		"// init
      	var (aaa/bbb/ccc.txt",
      		"/aaa/bbb/",
      		fileName = "gflie_example.txt""/aaa/",
      		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)"/aaa",
      		"/aaa/ccc/ddd.txt",
      		"/bbb",
      		"/0123",
      		"/ddd",
      		"/ccc",
      	}
      	sortOut := gfile.SortFiles(files)
      	fmt.Println(sortOut)
      
      	// Output:
      	// [/0123 /aaa goframe example content
      	// goframe example replace word
      }

    ReplaceFileFunc

    • /aaa/ /aaa/bbb/ /aaa/bbb/ccc.txt /aaa/ccc/ddd.txt /bbb /ccc /ddd]
      }


    文件检索

    • 说明:在指定目录(默认包含当前目录、运行目录、主函数目录;不会递归子目录)中搜索文件并返回真实路径。
    • 格式: 

      Code Block
      languagego
      func Search(name string, prioritySearchPaths ...string) (realPath string, err error) 
      说明:使用自定义函数替换指定文件内容


    • 示例:

      Code Block
      languagego
      func ExampleReplaceFileFuncExampleSearch() {
      	// init
      	var (
      		fileName = "gfliegfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_replacesearch")
      		tempFile = gfile.Join(tempDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "goframe example 123content")
      
      	// 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, search file
      	realPath, _ := regexp.Compile(`\d{3}`)
      		return reg.ReplaceAllString(content, "[num]")
      	}, tempFile)
      gfile.Search(fileName, tempDir)
      	fmt.Println(gfile.GetContentsBasename(tempFilerealPath))
      
      	// Output:
      	// goframe example 123
      	// goframe example [num]
      }

    ReplaceDir

    •  gfile_example.txt
      }


    目录扫描

    ScanDir

    • 说明:扫描指定目录,可扫描文件或目录,支持递归扫描。
    • 格式: 

      Code Block
      languagego
      func ScanDir(path string, pattern string, recursive ...bool) ([]string, error)


    • 说明:扫描指定目录,替换符合条件的文件的指定内容为新内容
    • 示例:

      Code Block
      languagego
      func ExampleReplaceDirExampleScanDir() {
      	// init
      	var (
      		fileName = "gflie_example.txt"
      		tempDir "gfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_scan_dir")
      		tempFile = gfile.Join(tempDir, fileName)
      
      		tempSubDir  = gfile.TempDirJoin(tempDir, "gfilesub_example_replacedir")
      		tempFiletempSubFile = gfile.Join(tempDirtempSubDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "goframe example content")
      
      	// read contents
      	fmt.Println(gfile.GetContents(tempFile))PutContents(tempSubFile, "goframe example content")
      
      	// It replaces content of all files under specified scans directory recursively.
      	gfile.ReplaceDir("content"list, "replace word", _ := gfile.ScanDir(tempDir, "gflie_example.txt*", true)
      
      	// read contents
      		for _, v := range list {
      		fmt.Println(gfile.GetContentsBasename(tempFilev))
      	}
      
      	// Output:
      	// goframe example contentgfile_example.txt
      	// sub_dir
      	// goframe example replace word
      }

    ReplaceDirFunc

    • gfile_example.txt
      }


    ScanDirFile

    • 说明:扫描指定目录的文件,支持递归扫描
    • 格式: 

      Code Block
      languagego
      func ScanDirFile(path string, pattern string, recursive ...bool) ([]string, error)
      说明:扫描指定目录,使用自定义函数替换符合条件的文件的指定内容为新内容


    • 示例:

      Code Block
      languagego
      func ExampleReplaceDirFuncExampleScanDirFile() {
      	// init
      	var (
      		fileName = "gfliegfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_replace_scan_dir_file")
      		tempFile = gfile.Join(tempDir, fileName)
      
      		tempSubDir  = gfile.Join(tempDir, "sub_dir")
      		tempFiletempSubFile = gfile.Join(tempDirtempSubDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "goframe example content")
      	gfile.PutContents(tempSubFile, "goframe example 123content")
      
      	// read contents
       scans directory recursively exclusive of directories
      	list, _ := gfile.ScanDirFile(tempDir, "*.txt", true)
      	for _, v := range list {
      		fmt.Println(gfile.GetContentsBasename(tempFilev))
      	}
      
      	// 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

  • 说明:获取路径修改时间
  • 示例:

    Code Block
    languagego
    func ExampleMTime() {
    	t := gfile.MTime(gfile.TempDir())
    	fmt.Println(t)
    
    	// May Output:
    	// 2021-11-02 15:18:43.901141 +0800 CST
    }
    • Output:
      	// gfile_example.txt
      	// gfile_example.txt
      }


    ScanDirFunc

    • 说明:扫描指定目录(自定义过滤方法),可扫描文件或目录,支持递归扫描
    • 格式: 

      Code Block
      languagego
      func ScanDirFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error)


    • 示例:

      Code Block
      languagego
      func ExampleScanDirFunc() {
      	// init
      	var (
      		fileName = "gfile_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) == "gfile_example.txt" {
      			return ""
      		}
      		return path
      	})
      	for _, v := range list {
      		fmt.Println(gfile.Basename(v))
      	}
      
      	//

    MTimestamp

    • 说明:获取路径修改时间戳(秒)
    • 示例:

      Code Block
      languagego
      func ExampleMTimestamp() {
      	t := gfile.MTimestamp(gfile.TempDir())
      	fmt.Println(t)
      
      	// May Output:
      	// 1635838398sub_dir
      }
    MTimestampMilli

    ScanDirFileFunc

    • 说明:获取路径修改时间戳(毫秒)说明:扫描指定目录的文件(自定义过滤方法),支持递归扫描。
    • 示例:
    • 格式: 

      Code Block
      languagego
      func 
    • ExampleMTimestampMilli() { t := gfile.MTimestampMilli(gfile.TempDir()) fmt.Println(t) // May Output: // 1635838529330 }

    大小获取

    Size

    • 说明:获取路径大小
      ScanDirFileFunc(path string, pattern string, recursive bool, handler func(path string) string) ([]string, error) 


    • 示例:

      Code Block
      languagego
      func ExampleSizeExampleScanDirFileFunc() {
      	// init
      	var (
      		fileName = "gfliegfile_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_sizescan_dir_file_func")
      		tempFile = gfile.Join(tempDir, fileName)
      
      	)
      
      	//fileName1 write= contents
      	gfile.PutContents(tempFile, "0123456789")
      	fmt.Println(gfile.Size(tempFile))
      
      	// Output:
      	// 10
      }

    SizeFormat

    • 说明:获取路径大小,并格式化
    • 示例:

      Code Block
      languagego
      func ExampleSizeFormat() {
      	// init
      	var (
      		fileName = "gflie_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_size"gfile_example_ignores.txt"
      		tempFile1 = gfile.Join(tempDir, fileName1)
      
      		tempSubDir  = gfile.Join(tempDir, "sub_dir")
      		tempFiletempSubFile = gfile.Join(tempDirtempSubDir, fileName)
      	)
      
      	// write contents
      	gfile.PutContents(tempFile, "0123456789goframe example content")
      	fmt.Println(gfile.SizeFormat(tempFile))
      
      	// Output:
      	// 10.00B
      }

    ReadableSize

    • 说明:获取路径大小,并格式化人类易读
    • 示例:

      Code Block
      languagego
      func ExampleReadableSize() {PutContents(tempFile1, "goframe example content")
      	gfile.PutContents(tempSubFile, "goframe example content")
      
      	// init
      	var (
      		fileName = "gflie_example.txt"
      		tempDir  = gfile.TempDir("gfile_example_size")
      		tempFile scans directory recursively exclusive of directories
      	list, _ := gfile.JoinScanDirFileFunc(tempDir, "*.txt", fileName)true, func(path string) string {
      	)
      
      	// writeignores some contentsfiles
      		if gfile.PutContents(tempFile, "01234567899876543210")
      	fmt.Println(gfile.ReadableSize(tempFile))
      
      	// Output:
      	// 20.00B
      }

    StrToSize

    • 说明:大小字符串转换为大小整形
    • 示例:

      Code Block
      languagego
      func ExampleStrToSize() {
      	size := gfile.StrToSize("100MB")
      	fmt.Println(size)Basename(path) == "gfile_example_ignores.txt" {
      			return ""
      		}
      		return path
      	})
      	for _, v := range list {
      		fmt.Println(gfile.Basename(v))
      	}
      
      	// Output:
      	// 104857600gfile_example.txt
      	// gfile_example.txt
      }

    FormatSize


    常用目录

    Pwd

    • 说明:获取当前工作路径。
    • 格式: 

      Code Block
      languagego
      func Pwd() string
      说明:大小整形转换为大小字符串


    • 示例:

      Code Block
      languagego
      func 
    • ExampleFormatSize
    • ExamplePwd() {
      	
    • sizeStr := gfile.FormatSize(104857600) fmt.Println(sizeStr) sizeStr0 := gfile.FormatSize(1024) fmt.Println(sizeStr0) sizeStr1 := gfile.FormatSize(999999999999999999)
    • // Get absolute path of current working directory.
      	fmt.Println(gfile.Pwd(
    • sizeStr1
    • ))
      
      	// May Output:
      	// 
    • 100.00M
    • xxx/
    • / 1.00K // 888.18P
    • gf/os/gfile
      }
    文件排序

    Home

    SortFiles

    • 说明:获取运行用户的主目录
    • 格式: 

    • 说明:排序多个路径
    • 示例:
    • Code Block
      languagego
      func 
    • ExampleSortFiles
    • Home(names ...string) (string, error) 


    • 示例:

      Code Block
      languagego
      func ExampleHome() {
      	// user's home directory
      	homePath, _) {
      	files := []string{
      		"/aaa/bbb/ccc.txt",
      		"/aaa/bbb/",
      		"/aaa/",
      		"/aaa",
      		"/aaa/ccc/ddd.txt",
      		"/bbb",
      		"/0123",
      		"/ddd",
      		"/ccc",
      	}
      	sortOut := gfile.SortFilesHome(files)
      	fmt.Println(sortOuthomePath)
      
      	// May Output:
      	// [/0123 /aaa /aaa/ /aaa/bbb/ /aaa/bbb/ccc.txt /aaa/ccc/ddd.txt /bbb /ccc /ddd]
      }

    文件搜索

    • C:\Users\hailaz
      }


    Temp

    • 说明:获取拼接系统临时路径后的绝对地址。

    • 格式: 

      Code Block
      languagego
      func Temp(names ...string) string
      说明:在指定目录(默认包含当前目录、运行目录、主函数目录;不会递归子目录)中搜索文件并返回真实路径


    • 示例:

      Code Block
      languagego
      func 
    • ExampleSearch
    • ExampleTempDir() {
      	// init
      	var (
      		fileName = "
    • gflie
    • gfile_example
    • .txt
    • _basic_dir"
      	
    • tempDir = gfile.TempDir("gfile_example_search") tempFile
    • )
      
      	// fetch an absolute representation of path.
      	path := gfile.
    • Join
    • Temp(
    • tempDir,
    • fileName)
      
      	fmt.Println(path)
    • // write contents gfile
    • 
      
      	// Output:
      	// /tmp/gfile_example_basic_dir
      }


    SelfPath

    • 说明:获取当前运行程序的绝对路径。

    • 格式: 

      Code Block
      languagego
      func SelfPath() string 


    • 示例:

      Code Block
      languagego
      func ExampleSelfPath() {
    • .PutContents(tempFile, "goframe example content")
    • 
      
      	// 
    • search
    • Get absolute file
    • realPath, _ := gfile.Search(fileName, tempDir)
    •  path of current running process
      	fmt.Println(gfile.
    • Basename
    • SelfPath(
    • realPath
    • ))
      
      	// May Output:
      	// 
    • gflie_example.txt }

    目录扫描

    ScanDir

    • xxx/___github_com_gogf_gf_v2_os_gfile__ExampleSelfPath
      }


    类型判断

    IsDir

    • 说明:检查给定的路径是否是文件夹。
    • 格式: 

      Code Block
      languagego
      func IsDir(path string) bool
      说明:扫描指定目录,可扫描文件或目录,支持递归扫描


    • 示例:

      Code Block
      languagego
      func 
    • ExampleScanDir
    • ExampleIsDir() {
      	// 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 {
    • 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.
    • Basename
    • IsDir(
    • v
    • path))
      	
    • }
    • fmt.Println(gfile.IsDir(filePath))
      
      	// Output:
      	// 
    • gflie_example.txt
    • true
      	// 
    • sub_dir // gflie_example.txt }

    ScanDirFile

    • false
      }


    IsFile

    • 说明:检查给定的路径是否是文件。
    • 格式: 

      Code Block
      languagego
      func IsFile(path string) bool
      说明:扫描指定目录的文件,支持递归扫描


    • 示例:

      Code Block
      languagego
      func 
    • ExampleScanDirFile
    • ExampleIsFile() {
      	// init
      	var (
      		
    • fileName = "gflie_example.txt" tempDir
    • filePath = 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")
    • Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      		dirPath  = gfile.TempDir("gfile_example_basic_dir")
      	)
      	// 
    • scans
    • Checks 
    • directory
    • whether 
    • recursively
    • given 
    • exclusive
    • `path` 
    • of directories list, _ := gfile.ScanDirFile(tempDir, "*.txt", true) for _, v := range list {
    • a file, which means it's not a directory.
      	fmt.Println(gfile.IsFile(filePath))
      	fmt.Println(gfile.
    • Basename
    • IsFile(
    • v
    • dirPath))
    • }
    • 
      
      	// Output:
      	// 
    • gflie_example.txt
    • true
      	// 
    • gflie_example.txt
    • false
      }

    ScanDirFunc


    权限操作

    IsReadable

    • 说明:检查给定的路径是否可读。

    • 格式: 

      Code Block
      languagego
      func IsReadable(path string) bool 
      说明:扫描指定目录(自定义过滤方法),可扫描文件或目录,支持递归扫描


    • 示例:

      Code Block
      languagego
      func 
    • ExampleScanDirFunc
    • ExampleIsReadable() {
      	// init
      	var (
      		
    • fileName
    • path = 
    • "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)
    • Pwd() + gfile.Separator + "testdata/readline/file.log"
      	)
      
      	// Checks 
    • write contents gfile.PutContents(tempFile, "goframe example content") gfile.PutContents(tempSubFile, "goframe example content"
    • whether given `path` is readable.
      	fmt.Println(gfile.IsReadable(path))
      
      	// 
    • scans directory recursively
    • Output:
      	
    • list, _ := gfile.ScanDirFunc(tempDir, "*", true, func(path string) string
    • // true
      }


    IsWritable

    • 说明:检查指定路径是否可写,如果路径是目录,则会创建临时文件检查是否可写,如果是文件则判断是否可以打开

    • 格式: 

      Code Block
      languagego
      func IsWritable(path string) bool 


    • 示例:

      Code Block
      languagego
      func ExampleIsWritable() {
      	
    • // 
    • ignores some files
    • init
      	var (
      		
    • if
    • path = gfile.
    • Basename
    • Pwd(
    • path
    • ) 
    • == "gflie_example.txt" { return "" } return path }) for _, v := range list {
    • + gfile.Separator + "testdata/readline/file.log"
      	)
      
      	// Checks whether given `path` is writable.
      	fmt.Println(gfile.
    • Basename
    • IsWritable(
    • v
    • path))
    • }
    • 
      
      	// Output:
      	// 
    • sub_dir
    • true
      }

    ScanDirFileFunc


    Chmod

    • 说明:使用指定的权限,更改指定路径的文件权限。

    • 格式: 

      Code Block
      languagego
      func Chmod(path string, mode os.FileMode) error
      说明:扫描指定目录的文件(自定义过滤方法),支持递归扫描


    • 示例:

      Code Block
      languagego
      func 
    • ExampleScanDirFileFunc
    • ExampleChmod() {
      	// 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
    • path = gfile.Join
    • (tempSubDir, fileName
    • (gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      
      	//
    • write contents gfile.PutContents(tempFile, "goframe example content") gfile.PutContents(tempFile1, "goframe example content") gfile.PutContents(tempSubFile, "goframe example content")
    •  Get a FileInfo describing the named file.
      	stat, err := gfile.Stat(path)
      	if err != nil {
      		fmt.Println(err.Error())
      	}
      	// 
    • scans
    • Show 
    • 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)) }
    • 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())
      
      	// Output:
      	// 
    • gflie_example.txt
    • -rw-r--r--
      	// 
    • gflie_example.txt
    • -rwxrwxrwx
      }


    文件/

    文件夹管理

    目录操作

    Mkdir

    • 说明:创建文件夹,支持递归创建(建议采用绝对路径),创建后的文件夹权限为:`drwxr创建后的文件夹权限为:drwxr-xr-x`x
    • 格式: 

      Code Block
      languagego
      func Mkdir(path string) error


    • 示例:

      Code Block
      languagego
      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:
      	// true
      }


    Create

    • 说明:创建文件/文件夹,如果传入的路径中的文件夹不存在,则会自动创建文件夹以及文件,其中创建的文件权限为`如果传入的路径中的文件夹不存在,则会自动创建文件夹以及文件,其中创建的文件权限为-rw-r–r–`。r–r–
    • 注意:如果需要创建文件的已存在,则会清空该文件的内容!
    • 格式: 

      Code Block
      languagego
      func Create(path string) (*os.File, error)


    • 示例:

      Code Block
      languagego
      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(isFile)
      
      	// 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:
      	// false
      	// true
      	// hello goframe
      }


    Open

    • 说明:以只读的方式打开文件/文件夹文件夹。
    • 格式: 

      Code Block
      languagego
      func Open(path string) (*os.File, error)


    • 示例:

      Code Block
      languagego
      func ExampleOpen() {
      	// init
      	var (
      		path     = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      		dataByte = make([]byte, 4096)
      	)
      	// Open file or directory with READONLY model
      	file, _ := gfile.Open(path)
      	defer file.Close()
      
      	// Read data
      	n, _ := file.Read(dataByte)
      
      	fmt.Println(string(dataByte[:n]))
      
      	// Output:
      	// hello goframe
      }


    OpenFile

    • 说明:以指定`flag`以及`perm`的方式打开文件/文件夹。
    • 格式: 

      Code Block
      languagego
      func OpenFile(path string, flag int, perm os.FileMode) (*os.File, error)


    • 示例:

      Code Block
      languagego
      func ExampleOpenFile() {
      	// 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, _ := openFile.WriteString("hello goframe test open file")
      
      	fmt.Println(writeLength)
      
      	// Read data
      	unix.Seek(int(openFile.Fd()), 0, 0)
      	n, _ := openFile.Read(dataByte)
      
      	fmt.Println(string(dataByte[:n]))
      
      	// Output:
      	// 28
      	// hello goframe test open file
      }


    OpenWithFalg

    • 说明:以指定`flag`的方式打开文件/文件夹。
    • 格式: 

      Code Block
      languagego
      func OpenWithFlag(path string, flag int) (*os.File, error)


    • 示例:

      Code Block
      languagego
      func ExampleOpenWithFlag() {
      	// init
      	var (
      		path     = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      		dataByte = make([]byte, 4096)
      	)
      
      	// Opens file/directory with custom `flag`
      	// Create if file does not exist,it is created in a readable and writable mode with default `perm` is 0666
      	openFile, _ := gfile.OpenWithFlag(path, os.O_CREATE|os.O_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]))
      
      	// Output:
      	// 38
      	// hello goframe test open file with flag
      }


    OpenWithFalgPerm

    • 说明:以指定`flag`以及`perm`的方式打开文件/文件夹。文件夹。
    • 格式: 

      Code Block
      languagego
      func OpenWithFlagPerm(path string, flag int, perm os.FileMode) (*os.File, error) 


    • 示例:

      Code Block
      languagego
      func ExampleOpenWithFlagPerm() {
      	// 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  `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(writeLength)
      
      	// Read data
      	unix.Seek(int(openFile.Fd()), 0, 0)
      	n, _ := openFile.Read(dataByte)
      
      	fmt.Println(string(dataByte[:n]))
      
      	// Output:
      	// 38
      	// hello goframe test open file with flag
      }


    Stat

    • 说明:获取给定路径的文件详情。
    • 格式: 

      Code Block
      languagego
      func Stat(path string) (os.FileInfo, error)


    • 示例:

      Code Block
      languagego
      func ExampleStat() {
      	// init
      	var (
      		path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      	// 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]}
      }

    Move


    Copy

    • 说明:支持复制文件或目录
    • 格式: 

      Code Block
      languagego
      func Copy(src string, dst string) error 


    • 示例:

      Code Block
      languagego
      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
    • 说明:将`src`重命名为`dst`。

    • 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!
    • 示例:

      Code Block
      languagego
      func ExampleMove() { // init var ( srcPath
    •  = gfile.Join(srcTempDir, dstFileName)
      
      		// copy dir
      		dstTempDir = gfile.TempDir("gfile_example_
    • basic
    • copy_
    • dir
    • dst")
      	)
      
      	// write contents
      	gfile.PutContents(srcTempFile, "
    • file1
    • goframe example copy")
      
      	
    • dstPath
    • // 
    • =
    • copy 
    • gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file2") )
    • file
      	gfile.Copy(srcTempFile, dstTempFile)
      
      	// read contents 
    • Check
    • after 
    • is
    • copy file
      	fmt.Println(gfile.
    • IsFile
    • GetContents(
    • dstPath
    • dstTempFile))
      
      	// 
    • Moves `src` to `dst` path.
    • copy dir
      	gfile.Copy(srcTempDir, dstTempDir)
      
      	// 
    • If
    • list 
    • `dst`
    • copy 
    • already exists and is not a directory, it'll be replaced. gfile.Move(srcPath, dstPath) fmt.Println(gfile.IsFile(srcPath))
    • dir file
      	fList, _ := gfile.ScanDir(dstTempDir, "*", false)
      	for _, v := range fList {
      		fmt.Println(gfile.
    • IsFile
    • Basename(
    • dstPath
    • v))
      	}
      
      	// Output:
      	// goframe 
    • false
    • example copy
      	// 
    • false
    • gfile_example.txt
      	// 
    • true }

    Rename

    • gfile_example_copy.txt
      }


    CopyFile

    • 说明:复制文件
    • 格式: 

      Code Block
      languagego
      func CopyFile(src, dst string) (err error)
    • 说明:Move的别名,将`src`重命名为`dst`。

    • 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!


    • 示例:

      Code Block
      languagego
      func 
    • ExampleRename
    • ExampleCopyFile() {
      	// init
      	var (
      		
    • srcPath
    • srcFileName = "gfile_example.txt"
      		srcTempDir  = gfile.
    • Join
    • TempDir("gfile
    • .TempDir(
    • _example_copy_src")
      		srcTempFile = gfile.Join(srcTempDir, srcFileName)
      
      		// copy file
      		dstFileName = "gfile_example_
    • basic_dir"), "file2")
    • copy.txt"
      		
    • dstPath
    • dstTempFile = gfile.Join(
    • gfile.TempDir("gfile_example_basic_dir"), "file1"
    • srcTempDir, dstFileName)
      	)
      
      	// 
    • Check
    • write 
    • is file
    • contents
      	
    • fmt.Println(
    • gfile.
    • IsFile(dstPath))
    • PutContents(srcTempFile, "goframe example copy")
      
      	// 
    • renames (moves) `src` to `dst` path.
    • copy file
      	gfile.CopyFile(srcTempFile, dstTempFile)
      
      	// 
    • If
    • read 
    • `dst`
    • contents 
    • already exists and is not a directory, it'll be replaced. gfile.Rename(srcPath, dstPath)
    • after copy file
      	fmt.Println(gfile.
    • IsFile
    • GetContents(
    • srcPath
    • dstTempFile))
      	
    • fmt.Println(gfile.IsFile(dstPath))
    • 
      	// Output:
      	// 
    • false // false // true }

    Remove

    • goframe example copy
      }


    CopyDir

    • 说明:支持复制文件或目录
    • 格式: 

      Code Block
      languagego
      func CopyDir(src string, dst string) error 
      说明:删除给定路径的文件或文件夹。


    • 示例:

      Code Block
      languagego
      func 
    • ExampleRemove
    • ExampleCopyDir() {
      	// init
      	var (
      		
    • path
    • srcTempDir  = gfile.
    • Join(gfile.
    • TempDir("gfile_example_
    • basic
    • copy_
    • dir
    • src")
    • , "file1")
    • 
      		
    • )
    • 
      
    • 		// 
    • 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)
      
      		// 
    • deletes all file/directory with `path` parameter. gfile.Remove(path)
    • copy dir
      		dstTempDir = gfile.TempDir("gfile_example_copy_dst")
      	)
      	// 
    • Check again
    • read contents after copy file
      	fmt.Println(gfile.
    • IsFile
    • GetContents(
    • path
    • dstTempFile))
      
      	// 
    • Output: // true // false }

    IsEmpty

    • 说明:检查给定的路径,如果是文件夹则检查是否包含文件,如果是文件则检查`容量`是否为空。

    • 示例:

      Code Block
      languagego
      func ExampleIsEmpty() {
    • copy dir
      	gfile.CopyDir(srcTempDir, dstTempDir)
      
      	//
    • init var ( path
    •  list copy dir file
      	fList, _ := gfile.
    • Join(gfile.TempDir("gfile_example_basic_dir"), "file1") ) // Check whether the `path` is empty
    • ScanDir(dstTempDir, "*", false)
      	for _, v := range fList {
      		fmt.Println(gfile.
    • IsEmpty
    • Basename(
    • path
    • v))
      	}
      
      	// 
    • Truncate file
    • Output:
      	// gfile
    • .Truncate(path, 0)
    • _example.txt
      	// 
    • Check whether the `path` is empty fmt.Println(gfile.IsEmpty(path)) // Output: // false // true }

    Chmod

    • gfile_example_copy.txt
      }


    Move

    • 说明:将src重命名为dst

    • 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!
    • 格式: 

      Code Block
      languagego
      func Move(src string, dst string) error 
      说明:使用指定的权限,更改指定路径的文件权限。


    • 示例:

      Code Block
      languagego
      func ExampleChmodExampleMove() {
      	// init
      	var (
      		pathsrcPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      
      	//dstPath Get a FileInfo describing the named file.
      	stat, err := gfile.Stat(path)
      	if err != nil {
      		fmt.Println(err.Error())
      	}= gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file2")
      	)
      	// ShowCheck originalis modefile
      	fmt.Println(statgfile.ModeIsFile(dstPath))
      
      	//  Moves `src` Changeto file model
      	gfile.Chmod(path, gfile.DefaultPermCopy)
      `dst` path.
      	// Get a FileInfo describing the named file.
      	stat, _ = gfile.Stat(path)
      	// Show the modified modeIf `dst` already exists and is not a directory, it'll be replaced.
      	gfile.Move(srcPath, dstPath)
      
      	fmt.Println(gfile.IsFile(srcPath))
      	fmt.Println(statgfile.ModeIsFile(dstPath))
      
      	// Output:
      	// -rw-r--r--false
      	// false
      	// -rwxrwxrwxtrue
      }

    文件路径

    Joinn


    Rename

    • 说明:Move的别名,将src重命名为dst

    • 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!
    • 格式: 

      Code Block
      languagego
      func Rename(src string, dst string) error
      说明:将多个字符串路径通过“/”进行连接。


    • 示例:

      Code Block
      languagego
      func ExampleJoinExampleRename() {
      	// init
      	var (
      		dirPath srcPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file2")
      		dstPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      		filePath = "file1"
      	)
      )
      	// Check is file
      	fmt.Println(gfile.IsFile(dstPath))
      
      	//  renames (moves) `src` to `dst` path.
      	// If `dst` Joinsalready stringexists arrayand pathsis withnot filea separator of current systemdirectory, it'll be replaced.
      	joinString := gfile.JoinRename(dirPathsrcPath, filePathdstPath)
      
      	fmt.Println(joinStringgfile.IsFile(srcPath))
      	fmt.Println(gfile.IsFile(dstPath))
      
      	// Output:
      	// /tmp/gfile_example_basic_dir/file1
      }

    Exists

    • false
      	// false
      	// true
      }


    Remove

    • 说明:删除给定路径的文件或文件夹。

    • 格式: 

      Code Block
      languagego
      func Remove(path string) error
      说明:检查给定的路径是否存在 。


    • 示例:

      Code Block
      languagego
      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` exist.parameter.
      	gfile.Remove(path)
      
      	// Check again
      	fmt.Println(gfile.Exists(path))
      
      	// Output:
      	// true
      }

    IsDir

    • .IsFile(path))
      
      	// Output:
      	// true
      	// false
      }


    IsEmpty

    • 说明:检查给定的路径,如果是文件夹则检查是否包含文件,如果是文件则检查文件大小是否为空。

    • 格式: 

      Code Block
      languagego
      func IsEmpty(path string) bool 


    • 说明:检查给定的路径是否是文件夹。
    • 示例:

      Code Block
      languagego
      func ExampleIsDirExampleIsEmpty() {
      	// init
      	var (
      		path     = gfile.TempDir("gfile_example_basic_dir")
      		filePath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      
      	// ChecksCheck whether giventhe `path` ais directory.empty
      	fmt.Println(gfile.IsDirIsEmpty(path))
      	fmt.Println(gfile.IsDir(filePath))
      
      	// Output:
      	// true
      	// false
      }

    Pwd

    • 说明:获取当前工作路径。
    • 示例:

      Code Block
      languagego
      func ExamplePwd() {Truncate file
      	gfile.Truncate(path, 0)
      
      	// GetCheck absolutewhether paththe of`path` current working directory.is empty
      	fmt.Println(gfile.PwdIsEmpty(path))
      
      	// May Output:
      	// xxxfalse
      	/gf/os/gfile true
      }

    Chdir


    DirNames

    • 说明:获取给定路径下的文件列表,返回的是一个切片。

    • 格式: 

      Code Block
      languagego
      func DirNames(path string) ([]string, error)
      说明:使用给定的路径,更改当前的工作路径。


    • 示例:

      Code Block
      languagego
      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
      languagego
      func Glob(pattern string, onlyNames ...bool) ([]string, error)
      说明:检查给定的路径是否是文件。


    • 示例:

      Code Block
      languagego
      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.IsFilePrintln(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
      languagego
      func Exists(path string) bool
      说明:获取给定路径下的文件列表,返回的是一个切片。


    • 示例:

      Code Block
      languagego
      func ExampleDirNamesExampleExists() {
      	// init
      	var (
      		path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      	// GetChecks sub-file names of whether given directory`path` `path`exist.
      	dirNames, _ := fmt.Println(gfile.DirNamesExists(path)
      
      	fmt.Println(dirNames)
      
      	// May Output:
      	// [file1]true
      }

    Glob


    Chdir

    • 说明:使用给定的路径,更改当前的工作路径。
    • 格式: 

      Code Block
      languagego
      func Chdir(dir string) error
      说明:模糊搜索给定路径下的文件列表,支持正则,第二个参数控制返回的结果是否带上绝对路径。


    • 示例:

      Code Block
      languagego
      func ExampleGlobExampleChdir() {
      	// init
      	var (
      		path = gfile.PwdJoin() + gfile.Separator + "*TempDir("gfile_example_basic_test.go"dir"), "file1")
      	)
      	// Get sub-file names of givencurrent working directory `path`.
      	// Only show file name
      	matchNames, _ := gfile.Glob(path, true)
      
      	fmt.Println(matchNames
      	fmt.Println(gfile.Pwd())
      
      	// Changes Showthe current fullworking pathdirectory ofto the named filedirectory.
      	matchNames, _ = gfile.GlobChdir(path, false)
      
      	// Get current working directory
      	fmt.Println(gfile.Pwd(matchNames))
      
      	// May Output:
      	// [gfile_z_example_basic_test.go]xxx/gf/os/gfile
      	// [xxx/gftmp/os/gfile/gfile_z_example_basic_test.go]
      }

    IsReadable

    • dir/file1
      }


    路径操作

    Join

    • 说明:将多个字符串路径通过`/`进行连接。
    • 格式: 

      Code Block
      languagego
      func Join(paths ...string) string 
      说明:检查给定的路径是否可读。


    • 示例:

      Code Block
      languagego
      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
      languagego
      func Abs(path string) string


    • 示例:

      Code Block
      languagego
      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
      languagego
      func RealPath(path string) string


    • 说明:获取给定路径的绝对路径地址,如果文件不存在则返回空。

    • 示例:

      Code Block
      languagego
      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
      	//
      }

    SelfPath


    SelfName

    • 说明:获取当前运行程序的名称。

    • 格式: 

      Code Block
      languagego
      func SelfName() string 
      说明:获取当前运行程序的绝对路径。


    • 示例:

      Code Block
      languagego
      func ExampleSelfPathExampleSelfName() {
      
      	// Get absolute file pathname of current running process
      	fmt.Println(gfile.SelfPathSelfName())
      
      	// May Output:
      	// xxx/___github_com_gogf_gf_v2_os_gfile__ExampleSelfPathExampleSelfName
      }

    SelfName


    Basename

    • 说明:获取给定路径中的最后一个元素,包含扩展名。

    • 格式: 

      Code Block
      languagego
      func Basename(path string) string
      说明:获取当前运行程序的名称。


    • 示例:

      Code Block
      languagego
      func ExampleSelfName() { ExampleBasename() {
      	// init
      	var (
      		path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
      	)
      
      	// Get the filelast nameelement of current running process path, 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
      languagego
      func Name(path string) string
      说明:获取给定路径中的最后一个元素,包含扩展名。


    • 示例:

      Code Block
      languagego
      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.Basename(path))
      
      	// Output:
      	// file.log
      }

    Name

    • Name(path))
      
      	// Output:
      	// file
      }


    Dir

    • 说明:获取给定路径的目录部分,排除最后的元素。

    • 格式: 

      Code Block
      languagego
      func Dir(path string) string 


    • 说明:获取给定路径中的最后一个元素,不包含扩展名。

    • 示例:

      Code Block
      languagego
      func ExampleNameExampleDir() {
      	// init
      	var (
      		path = gfile.PwdJoin() + gfile.Separator + "testdata/readline/file.log"gfile.TempDir("gfile_example_basic_dir"), "file1")
      	)
      
      	// Get all but the last element of path, typically withoutthe filepath's extensiondirectory.
      	fmt.Println(gfile.Name(path))
      
      	// Output:
      	// file
      }

    Dir

    • .Dir(path))
      
      	// Output:
      	// /tmp/gfile_example_basic_dir
      }


    Ext

    • 说明:获取给定路径的扩展名,包含`.`。

    • 格式: 

      Code Block
      languagego
      func Ext(path string) string


    • 说明:获取给定路径的目录部分,排除最后的元素。

    • 示例:

      Code Block
      languagego
      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, typically theused by path's directory.
      	fmt.Println(gfile.DirExt(path))
      
      	// Output:
      	// /tmp/gfile_example_basic_dir
      }

    Ext

    • .log
      }


    ExtName

    • 说明:获取给定路径的扩展名,不包含`.`。

    • 格式:  

      Code Block
      languagego
      func ExtName(path string) string


    • 说明:获取给定路径的扩展名,包含`.`。

    • 示例:

      Code Block
      languagego
      func ExampleExtExampleExtName() {
      	// init
      	var (
      		path = gfile.Pwd() + gfile.Separator + "testdata/readline/file.log"
      	)
      
      	// Get the file name extension used by path but the result does not contains symbol '.'.
      	fmt.Println(gfile.ExtExtName(path))
      
      	// Output:
      	// .log
      }

    ExtName


    MainPkgPath

    • 说明:获取main文件(主入口)所在的绝对路径,。

    • 注意:
      • 该方法仅在开发环境中可用,同时仅在源代码开发环境中有效,build二进制后将显示源代码的路径地址。
      • 第一次调用该方法时,如果处于异步的goroutine中,可能会无法获取主包的路径
    • 格式:  

      Code Block
      languagego
      func MainPkgPath() string
      说明:获取给定路径的扩展名,不包含`.`。


    • 示例:

      Code Block
      languagego
      func ExampleExtNameTest() {
      	// init
      	var (
      		path = gfile.Pwd() + 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
      }

    TempDir

    • 说明:获取拼接系统临时路径后的绝对地址。

    • 示例:

      Code Block
      languagego
      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
      }fmt.Println("main pkg path on main :", gfile.MainPkgPath())
      	char := make(chan int, 1)
      	go func() {
      		fmt.Println("main pkg path on goroutine :", gfile.MainPkgPath())
      		char <- 1
      	}()
      	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
    titleContent Menu

    Table of Contents