2024-04-02
藏龙卧虎
00

目录

简介
文件夹
创建
删除
检查
获取
文件
API
示例
赞助请求V3

简介

作为一门编程语言,操作文件是必不可少的功能需求。

本文记录一些使用 Golang 语言操作文件的示例。

前排提示:有些API用到的 os 库函数,可能已经弃用,变更为 ioutil

文件夹

创建

go
package 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) } }

删除

go
package 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) } }

检查

go
package 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.") } }

获取

go
package 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)") } } }

文件

API

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) error
  • 文件重命名:os.Rename(oldpath, newpath string) error
  • 文件截断:file.Truncate(size int64) error
  • 文件权限获取:file.Chmod(mode FileMode) error

这些是Go语言中一些常用的文件操作函数和方法。您可以根据具体的需求使用这些函数和方法来进行文件的读取、写入、创建、删除等操作。

示例

这里有几个最简单的示例。

go
package 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.") }

赞助请求V3

建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!

PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!