Categories: GoFrame 教程

GoFrame gfile-内容管理

内容管理

GetContents

  • 说明:读取指定路径文件内容,以字符串形式返回。
  • 格式:
func GetContents(path string) string
  • 示例:
func ExampleGetContents() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // It reads and returns the file content as string.
 // It returns empty string if it fails reading, for example, with permission or IO error.
 fmt.Println(gfile.GetContents(tempFile))

 // Output:
 // goframe example content
}

GetContentsWithCache

  • 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存。
  • 格式:
func GetContentsWithCache(path string, duration ...time.Duration) string
  • 示例:
func ExampleGetContentsWithCache() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_cache")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // It reads the file content with cache duration of one minute,
 // which means it reads from cache after then without any IO operations within on minute.
 fmt.Println(gfile.GetContentsWithCache(tempFile, time.Minute))

 // write new contents will clear its cache
 gfile.PutContents(tempFile, "new goframe example content")

 // Theres some delay for cache clearing after file content change.
 time.Sleep(time.Second * 1)

 // read contents
 fmt.Println(gfile.GetContentsWithCache(tempFile))

 // May Output:
 // goframe example content
 // new goframe example content
}

GetBytesWithCache

  • 说明:带缓存获取文件内容,可设置缓存超时,文件发生变化自动清除缓存,返回​[]byte​。
  • 格式:
func GetBytesWithCache(path string, duration ...time.Duration) []byte
  • 示例:
func ExampleGetBytesWithCache() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_cache")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // It reads the file content with cache duration of one minute,
 // which means it reads from cache after then without any IO operations within on minute.
 fmt.Println(gfile.GetBytesWithCache(tempFile, time.Minute))

 // write new contents will clear its cache
 gfile.PutContents(tempFile, "new goframe example content")

 // Theres some delay for cache clearing after file content change.
 time.Sleep(time.Second * 1)

 // read contents
 fmt.Println(gfile.GetBytesWithCache(tempFile))

 // Output:
 // [103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
 // [110 101 119 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}

GetBytes

  • 说明:读取指定路径文件内容,以字节形式返回。
  • 格式:
func GetBytes(path string) []byte
  • 示例:
func ExampleGetBytes() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // It reads and returns the file content as []byte.
 // It returns nil if it fails reading, for example, with permission or IO error.
 fmt.Println(gfile.GetBytes(tempFile))

 // Output:
 // [103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}

GetBytesTilChar

  • 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
  • 格式:
func GetBytesTilChar(reader io.ReaderAt, char byte, start int64) ([]byte, int64)
  • 示例:
func ExampleGetBytesTilChar() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen)

 // GetBytesTilChar returns the contents of the file as []byte
 // until the next specified byte `char` position.
 char, i := gfile.GetBytesTilChar(f, f, 0)
 fmt.Println(char)
 fmt.Println(i)

 // Output:
 // [103 111 102]
 // 2
}

GetBytesByTwoOffsets

  • 说明:以指定的区间读取文件内容
  • 格式:
func GetBytesByTwoOffsets(reader io.ReaderAt, start int64, end int64) []byte 
  • 示例:
func ExampleGetBytesByTwoOffsets() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 f, _ := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, gfile.DefaultPermOpen)

 // GetBytesTilChar returns the contents of the file as []byte
 // until the next specified byte `char` position.
 char := gfile.GetBytesByTwoOffsets(f, 0, 3)
 fmt.Println(char)

 // Output:
 // [103 111 102]
}

PutContents

  • 说明:往指定路径文件添加字符串内容。如果文件不存在将会递归的形式自动创建。
  • 格式:
func putContents(path string, data []byte, flag int, perm os.FileMode) error
  • 示例:
func ExamplePutContents() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // It creates and puts content string into specifies file path.
 // It automatically creates directory recursively if it does not exist.
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // Output:
 // goframe example content
}

PutBytes

  • 说明:以字节形式写入指定文件,如果文件不存在将会递归的形式自动创建
  • 格式:
func PutBytes(path string, content []byte) error
  • 示例:
func ExamplePutBytes() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutBytes(tempFile, []byte("goframe example content"))

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // Output:
 // goframe example content
}

PutContentsAppend

  • 说明:追加字符串内容到指定文件,如果文件不存在将会递归的形式自动创建。
  • 格式:
func PutContentsAppend(path string, content string) error
  • 示例:
func ExamplePutContentsAppend() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // It creates and append content string into specifies file path.
 // It automatically creates directory recursively if it does not exist.
 gfile.PutContentsAppend(tempFile, " append content")

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // Output:
 // goframe example content
 // goframe example content append content
}

PutBytesAppend

  • 说明:追加字节内容到指定文件。如果文件不存在将会递归的形式自动创建。
  • 格式:
func PutBytesAppend(path string, content []byte) error
  • 示例:
func ExamplePutBytesAppend() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // write contents
 gfile.PutBytesAppend(tempFile, []byte(" append"))

 // read contents
 fmt.Println(gfile.GetContents(tempFile))

 // Output:
 // goframe example content
 // goframe example content append
}

GetNextCharOffset

  • 说明:从某个偏移量开始,获取文件中指定字符所在下标
  • 格式:
func GetNextCharOffset(reader io.ReaderAt, char byte, start int64) int64
  • 示例:
func ExampleGetNextCharOffset() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")
 
 f, err := gfile.OpenWithFlagPerm(tempFile, os.O_RDONLY, DefaultPermOpen)
 defer f.Close()

 // read contents
 index := gfile.GetNextCharOffset(f, f, 0)
 fmt.Println(index)

 // Output:
 // 2
}

GetNextCharOffsetByPath

  • 说明:从某个偏移量开始,获取文件中指定字符所在下标
  • 格式:
func GetNextCharOffsetByPath(path string, char byte, start int64) int64 
  • 示例:
func ExampleGetNextCharOffsetByPath() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 index := gfile.GetNextCharOffsetByPath(tempFile, f, 0)
 fmt.Println(index)

 // Output:
 // 2
}

GetBytesTilCharByPath

  • 说明:以某个字符定位截取指定长度的文件内容以字节形式返回
  • 格式:
func GetBytesTilCharByPath(path string, char byte, start int64) ([]byte, int64) 
  • 示例:
func ExampleGetBytesTilCharByPath() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 fmt.Println(gfile.GetBytesTilCharByPath(tempFile, f, 0))

 // Output:
 // [103 111 102] 2
}

GetBytesByTwoOffsetsByPath

  • 说明:用两个偏移量截取指定文件的内容以字节形式返回
  • 格式:
func GetBytesByTwoOffsetsByPath(path string, start int64, end int64) []byte
  • 示例:
func ExampleGetBytesByTwoOffsetsByPath() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "goframe example content")

 // read contents
 fmt.Println(gfile.GetBytesByTwoOffsetsByPath(tempFile, 0, 7))

 // Output:
 // [103 111 102 114 97 109 101]
}

ReadLines

  • 说明:以字符串形式逐行读取文件内容
  • 格式:
func ReadLines(file string, callback func(text string) error) error
  • 示例:
func ExampleReadLines() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "L1 goframe example content
L2 goframe example content")

 // read contents
 gfile.ReadLines(tempFile, func(text string) error {
  // Process each line
  fmt.Println(text)
  return nil
 })

 // Output:
 // L1 goframe example content
 // L2 goframe example content
}

ReadLinesBytes

  • 说明:以字节形式逐行读取文件内容
  • 格式:
func ReadLinesBytes(file string, callback func(bytes []byte) error) error 
  • 示例:
func ExampleReadLinesBytes() {
 // init
 var (
  fileName = "gflie_example.txt"
  tempDir  = gfile.TempDir("gfile_example_content")
  tempFile = gfile.Join(tempDir, fileName)
 )

 // write contents
 gfile.PutContents(tempFile, "L1 goframe example content
L2 goframe example content")

 // read contents
 gfile.ReadLinesBytes(tempFile, func(bytes []byte) error {
  // Process each line
  fmt.Println(bytes)
  return nil
 })

 // Output:
 // [76 49 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
 // [76 50 32 103 111 102 114 97 109 101 32 101 120 97 109 112 108 101 32 99 111 110 116 101 110 116]
}

Truncate

  • 说明:裁剪文件为指定大小
  • 注意:如果给定文件路径是软链,将会修改源文件
  • 格式:
func Truncate(path string, size int) error
  • 示例:
func ExampleTruncate(){
 // init
 var (
  path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
 )

 // Check whether the `path` size
 stat, _ := gfile.Stat(path)
 fmt.Println(stat.Size())

 // Truncate file
 gfile.Truncate(path, 0)

 // Check whether the `path` size
 stat, _ = gfile.Stat(path)
 fmt.Println(stat.Size())

 // Output:
 // 13
 // 0
}

冒牌SEO

前端开发者,欢迎大家一起沟通和交流。

Share
Published by
冒牌SEO

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

2 分钟 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago