创新互联GoFrame教程:GoFramegfile-文件/目录操作
文件/目录操作
Mkdir

- 说明:创建文件夹,支持递归创建(建议采用绝对路径),创建后的文件夹权限为:drwxr-xr-x。
- 格式:
func Mkdir(path string) error- 示例:
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–。
- 注意:如果需要创建文件的已存在,则会清空该文件的内容!
- 格式:
func Create(path string) (*os.File, error)- 示例:
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
- 说明:以只读的方式打开文件/文件夹。
- 格式:
func Open(path string) (*os.File, error)- 示例:
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`的方式打开文件/文件夹。
- 格式:
func OpenFile(path string, flag int, perm os.FileMode) (*os.File, error)- 示例:
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`的方式打开文件/文件夹。
- 格式:
func OpenWithFlag(path string, flag int) (*os.File, error)- 示例:
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`的方式打开文件/文件夹。
- 格式:
func OpenWithFlagPerm(path string, flag int, perm os.FileMode) (*os.File, error) - 示例:
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
- 说明:获取给定路径的文件详情。
- 格式:
func Stat(path string) (os.FileInfo, error)- 示例:
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]}
}Copy
- 说明:支持复制文件或目录
- 格式:
func Copy(src string, dst string) error - 示例:
func ExampleCopy() {
	// init
	var (
		srcFileName = "gflie_example.txt"
		srcTempDir  = gfile.TempDir("gfile_example_copy_src")
		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, dstTempFile)
	// read contents after copy file
	fmt.Println(gfile.GetContents(dstTempFile))
	// copy dir
	gfile.Copy(srcTempDir, dstTempDir)
	// list copy dir file
	fList, _ := gfile.ScanDir(dstTempDir, "*", false)
	for _, v := range fList {
		fmt.Println(gfile.Basename(v))
	}
	// Output:
	// goframe example copy
	// gflie_example.txt
	// gflie_example_copy.txt
}CopyFile
- 说明:复制文件
- 格式:
func CopyFile(src, dst string) (err error)- 示例:
func ExampleCopyFile() {
	// init
	var (
		srcFileName = "gflie_example.txt"
		srcTempDir  = gfile.TempDir("gfile_example_copy_src")
		srcTempFile = gfile.Join(srcTempDir, srcFileName)
		// copy file
		dstFileName = "gflie_example_copy.txt"
		dstTempFile = gfile.Join(srcTempDir, dstFileName)
	)
	// write contents
	gfile.PutContents(srcTempFile, "goframe example copy")
	// copy file
	gfile.CopyFile(srcTempFile, dstTempFile)
	// read contents after copy file
	fmt.Println(gfile.GetContents(dstTempFile))
	
	// Output:
	// goframe example copy
}CopyDir
- 说明:支持复制文件或目录
- 格式:
func CopyDir(src string, dst string) error - 示例:
func ExampleCopyDir() {
	// init
	var (
		srcTempDir  = gfile.TempDir("gfile_example_copy_src")
		
		// copy file
		dstFileName = "gflie_example_copy.txt"
		dstTempFile = gfile.Join(srcTempDir, dstFileName)
		// copy dir
		dstTempDir = gfile.TempDir("gfile_example_copy_dst")
	)
	// read contents after copy file
	fmt.Println(gfile.GetContents(dstTempFile))
	// copy dir
	gfile.CopyDir(srcTempDir, dstTempDir)
	// list copy dir file
	fList, _ := gfile.ScanDir(dstTempDir, "*", false)
	for _, v := range fList {
		fmt.Println(gfile.Basename(v))
	}
	// Output:
	// gflie_example.txt
	// gflie_example_copy.txt
}Move
- 说明:将src重命名为dst。
- 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!
- 格式:
func Move(src string, dst string) error - 示例:
func ExampleMove() {
	// init
	var (
		srcPath = 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
- 说明:Move的别名,将src重命名为dst。
- 注意:如果dst已经存在并且是文件,将会被替换造成数据丢失!
- 格式:
func Rename(src string, dst string) error- 示例:
func ExampleRename() {
	// init
	var (
		srcPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file2")
		dstPath = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
	)
	// Check is file
	fmt.Println(gfile.IsFile(dstPath))
	//  renames (moves) `src` to `dst` path.
	// If `dst` already exists and is not a directory, it'll be replaced.
	gfile.Rename(srcPath, dstPath)
	fmt.Println(gfile.IsFile(srcPath))
	fmt.Println(gfile.IsFile(dstPath))
	// Output:
	// false
	// false
	// true
}Remove
- 说明:删除给定路径的文件或文件夹。
- 格式:
func Remove(path string) error- 示例:
func ExampleRemove() {
	// 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)
	// Check again
	fmt.Println(gfile.IsFile(path))
	// Output:
	// true
	// false
}IsEmpty
- 说明:检查给定的路径,如果是文件夹则检查是否包含文件,如果是文件则检查文件大小是否为空。
- 格式:
func IsEmpty(path string) bool - 示例:
func ExampleIsEmpty() {
	// init
	var (
		path = 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)
	// Check whether the `path` is empty
	fmt.Println(gfile.IsEmpty(path))
	// Output:
	// false
	// true
}DirNames
- 说明:获取给定路径下的文件列表,返回的是一个切片。
- 格式:
func DirNames(path string) ([]string, error)- 示例:
func ExampleDirNames() {
	// init
	var (
		path = gfile.TempDir("gfile_example_basic_dir")
	)
	// Get sub-file names of given directory `path`.
	dirNames, _ := gfile.DirNames(path)
	fmt.Println(dirNames)
	// May Output:
	// [file1]
}Glob
- 说明:模糊搜索给定路径下的文件列表,支持正则,第二个参数控制返回的结果是否带上绝对路径。
- 格式:
func Glob(pattern string, onlyNames ...bool) ([]string, error)- 示例:
func ExampleGlob() {
	// init
	var (
		path = gfile.Pwd() + gfile.Separator + "*_example_basic_test.go"
	)
	// Get sub-file names of given directory `path`.
	// Only show file name
	matchNames, _ := gfile.Glob(path, true)
	fmt.Println(matchNames)
	// Show full path of the file
	matchNames, _ = gfile.Glob(path, false)
	fmt.Println(matchNames)
	// May Output:
	// [gfile_z_example_basic_test.go]
	// [xxx/gf/os/gfile/gfile_z_example_basic_test.go]
}Exists
- 说明:检查给定的路径是否存在 。
- 格式:
func Exists(path string) bool- 示例:
func ExampleExists() {
	// init
	var (
		path = gfile.Join(gfile.TempDir("gfile_example_basic_dir"), "file1")
	)
	// Checks whether given `path` exist.
	fmt.Println(gfile.Exists(path))
	// Output:
	// true
}Chdir
- 说明:使用给定的路径,更改当前的工作路径。
- 格式:
func Chdir(dir string) error- 示例:
func ExampleChdir() {
	// 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
	fmt.Println(gfile.Pwd())
	// May Output:
	// xxx/gf/os/gfile
	// /tmp/gfile_example_basic_dir/file1
}文章名称:创新互联GoFrame教程:GoFramegfile-文件/目录操作
网站路径:http://jxruijie.cn/article/djojcpd.html

 
                