golang 标准库(os)
os标准库实现了平台(操作系统)无关的编程接口。
1.创建文件
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. 创建目录
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. 删除文件、目录
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. 重命名文件
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. 写文件
文件操作模式:
覆盖写:os.O_WRONLY | os.O_TRUNC
追加写:os.O_WRONLY | os.O_APPEND
读写并追加:os.O_RDWR | os.OS_APPEND
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")
}