golang 标准库(os)

os标准库实现了平台(操作系统)无关的编程接口。

1.创建文件

image

package main

import (
	"fmt"
	"os"
)

// 创建文件
func CreatFile(FileName string) {
	f, err := os.Create(FileName)
	if err != nil {
		fmt.Println("err:", err)
	} else {
		fmt.Printf("创建文件%v成功", f.Name()) //f.Name 获取文件名
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.txt"
	CreatFile(file)
}

执行结果

创建文件D:/gowork/src/awesomeProject/lesson03/test.txt成功

2. 创建目录

image

package main

import (
	"fmt"
	"os"
)


// 创建目录
func CreatDir(DirName string) {
	//创建单个目录
	err := os.Mkdir(DirName, os.ModePerm) //os.ModePerm为Unix目录权限为0777
	if err != nil {
		fmt.Println("err:", err)
	}
	//创建多层目录
	err2 := os.MkdirAll(DirName, os.ModePerm)
	if err2 != nil {
		fmt.Println("err2:", err2)
	}
}

func main() {
	dir := "D:/gowork/src/awesomeProject/lesson03/abc"
	CreatDir(dir)
}

3. 删除文件、目录

image

package main

import (
	"fmt"
	"os"
)

func RemoveDir(Name string) {
	//删除单个目录或文件
	err := os.Remove(Name)
	if err != nil {
		fmt.Println("err:", err)
	}
	//删除目录和下面的子目录和文件
	err2 := os.RemoveAll(Name)
	if err2 != nil {
		fmt.Println("err2:", err2)
	}
}

func main() {
	dir := "D:/gowork/src/awesomeProject/lesson03/a"
	RemoveDir(dir)
}

4. 重命名文件

image

package main

import (
	"fmt"
	"os"
)

// 重命名或移动文件
func Rename(Name string, NewName string) {
	err := os.Rename(Name, NewName)
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	newfile := "D:/gowork/src/awesomeProject/lesson02/test.txt"
	Rename(file, newfile)
}

5. 读文件

package main

import (
	"fmt"
	"os"
)

// 读文件
func ReadFile(FileName string) {
	b, err := os.ReadFile(FileName) //b为返回的字节类型切片([]byte)
	if err != nil {
		fmt.Println("err:", err)
	} else {
		fmt.Println("b:", string(b)) //将切片转为字符串
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	ReadFile(file)
}

执行结果

b: 1,2,3
a,b,c
测试

6. 写文件

image

文件操作模式:
覆盖写:os.O_WRONLY | os.O_TRUNC
追加写:os.O_WRONLY | os.O_APPEND
读写并追加:os.O_RDWR | os.OS_APPEND
image

6.1 覆盖写入

package main

import (
	"fmt"
	"os"
)

// 写文件,会将之前的文件内容清空
func WriteFile(FileName string, s string) {
	//WriteFile的模式为O_WRONLY|O_CREATE|O_TRUNC
	err := os.WriteFile(FileName, []byte(s), os.ModePerm) //第一个参数为文件名,第二个参数为字节类型的切片,需要转换,第三个参数为文件的权限
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	WriteFile(file, "hello")
}

6.2 追加写入

package main

import (
	"fmt"
	"os"
)

// 文件追加
func WriteFile1(FileName string, s string) {
	f, err := os.OpenFile(FileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm) //以追加的模式打开文件
	if err != nil {
		fmt.Println("err:", err)
	}
	defer f.Close() //关闭文件
	s1 := []byte(s) //将字符串类型转为字节切片类型
	_, err = f.Write(s1)
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	WriteFile1(file, "\n123")
}

posted @ 2024-08-26 10:59  XIN-0808  阅读(15)  评论(0编辑  收藏  举报