作为一门编程语言,操作文件是必不可少的功能需求。
本文记录一些使用 Golang 语言操作文件的示例。
前排提示:有些API用到的 os 库函数,可能已经弃用,变更为 ioutil
gopackage main
import (
	"fmt"
	"os"
)
func main() {
	// 创建单个文件夹
	err := os.Mkdir("mydir", 0755)
	if err != nil {
		fmt.Println("Error creating directory:", err)
	}
	// 递归创建多层文件夹
	err = os.MkdirAll("mydir/subdir/subsubdir", 0755)
	if err != nil {
		fmt.Println("Error creating directory:", err)
	}
}
gopackage main
import (
	"fmt"
	"os"
)
func main() {
	// 删除单个文件夹
	err := os.Remove("mydir")
	if err != nil {
		fmt.Println("Error removing directory:", err)
	}
	// 递归删除文件夹及其所有子文件夹和文件
	err = os.RemoveAll("mydir/subdir")
	if err != nil {
		fmt.Println("Error removing directory:", err)
	}
}
gopackage main
import (
	"fmt"
	"os"
)
func main() {
	// 检查文件夹是否存在
	_, err := os.Stat("mydir")
	if os.IsNotExist(err) {
		fmt.Println("Directory does not exist.")
	} else {
		fmt.Println("Directory exists.")
	}
}
gopackage main
import (
	"fmt"
	"os"
)
func main() {
	// 要读取的文件夹路径
	dirPath := "mydir"
	// 打开文件夹
	dir, err := os.Open(dirPath)
	if err != nil {
		fmt.Println("Error opening directory:", err)
		return
	}
	defer dir.Close()
	// 读取文件夹内部的文件和子文件夹列表
	fileInfos, err := dir.Readdir(-1) // -1 表示读取文件夹内的所有内容
	if err != nil {
		fmt.Println("Error reading directory:", err)
		return
	}
	// 遍历文件夹内的文件和子文件夹列表
	fmt.Println("Files and subdirectories in", dirPath, ":")
	for _, fileInfo := range fileInfos {
		// 打印文件名或子文件夹名
		fmt.Println(fileInfo.Name())
		// 如果是子文件夹,则打印 " (Dir)" 标记
		if fileInfo.IsDir() {
			fmt.Println(" (Dir)")
		}
	}
}
Go语言提供了许多用于文件操作的标准库,主要包含在 os 和 io/ioutil 包中。以下是一些常见的文件相关操作:
os.Open(name string) (*File, error):打开指定名称的文件用于读取。os.Create(name string) (*File, error):创建或截断指定名称的文件用于写入。file.Close() error:关闭文件。file.Read(b []byte) (n int, err error):从文件中读取数据到字节切片。file.Write(b []byte) (n int, err error):将字节切片写入文件。ioutil.ReadFile(filename string) ([]byte, error):读取整个文件的内容到字节切片。ioutil.WriteFile(filename string, data []byte, perm os.FileMode) error:将字节切片写入文件。os.FileInfo 接口:提供了关于文件或文件夹的信息,如名称、大小、权限等。file.Stat() (FileInfo, error):返回文件信息。filepath.Join(elem ...string) string:连接多个路径元素为一个路径。filepath.Abs(path string) (string, error):返回绝对路径。其他操作:
os.Chmod(name string, mode FileMode) erroros.Rename(oldpath, newpath string) errorfile.Truncate(size int64) errorfile.Chmod(mode FileMode) error这些是Go语言中一些常用的文件操作函数和方法。您可以根据具体的需求使用这些函数和方法来进行文件的读取、写入、创建、删除等操作。
这里有几个最简单的示例。
gopackage main
import (
	"fmt"
	"io/ioutil"
	"os"
)
func main() {
	// 创建文件并写入内容
	content := []byte("Hello, world!")
	err = ioutil.WriteFile("mydir/myfile.txt", content, 0644)
	if err != nil {
		fmt.Println("Error writing file:", err)
		return
	}
	// 读取文件内容并打印
	data, err := ioutil.ReadFile("mydir/myfile.txt")
	if err != nil {
		fmt.Println("Error reading file:", err)
		return
	}
	fmt.Println("File content:", string(data))
	// 删除文件
	err = os.Remove("mydir/myfile.txt")
	if err != nil {
		fmt.Println("Error removing file:", err)
		return
	}
	fmt.Println("File operations completed successfully.")
}
建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!
PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。
如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!