go语言复制文件和操作目录

读取A文件,然后写入到B文件中

复制代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	// 读取文件
	byteStr, err := ioutil.ReadFile("./testFile.txt")
	//  如果哦 err 不为 nil,说明读取文件失败;所以要判断 err 是否为 nil
	if err != nil {
		fmt.Println(err)
		return
	}
	err2 := ioutil.WriteFile("./newWrite.txt", byteStr, 0666)
	if err2 != nil {
		fmt.Println(err2)
		return
	}
	fmt.Println("写入成功")
}

读取A文件,然后写入到B文件中(封装成一个方法)

复制代码
package main

import (
	"fmt"
	"io/ioutil"
)

func copyFile(srcPath string, dstPath string) error {
	// 读取文件
	byteStr, err := ioutil.ReadFile(srcPath)
	if err != nil {
		return err
	}
	// 写入到这个文件中去
	err2 := ioutil.WriteFile(dstPath, byteStr, 0666)
	if err2 != nil {
		return err2
	}
	return nil
}

func main() {
	err := copyFile("./testFile.txt", "./newWrite.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("写入成功")
}

创建一个目录

复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Mkdir("./newMulv", 0666)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("创建成功")
}

如果这个目录已经存在,会报错

提示: mkdir ./newMulv: Cannot create a file when that file already exists.

创建多级目录

复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	// 创建多级目录
	err := os.MkdirAll("./newMulv/soN1/s2", 0666)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("创建成功")
}

os.MkdirAll 如果这个目录已经存在,不会报错的;

所以这个方法使用的比较多,用来创建目录。

删除某个文件 os.Remove() 方法

复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	// 删除某个文件
	err := os.Remove("./newMulv/soN1/s2/aa.vue")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("删除成功")
}

删除某个目录, os.Remove() 方法

复制代码
package main
import (
	"fmt"
	"os"
)
func main() {
	// 删除某个目录
	err := os.Remove("./newMulv/soN1/s2")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("删除成功")
}

我们发现,os.Remove() 方法可以删除文件,也可以删除目录。

如果目录不存在的话,会报错的哈。

删除某个目录下的所有子目录以及子文件 os.RemoveAll

复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	// 删除某个目录下的所有子目录以及子文件
	err := os.RemoveAll("./newMulv")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("删除成功")
}

如果这个目录不在的话,os.RemoveAll方法不会报错的。

更改文件的名称 os.Rename

复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	// 更改某个文件的名称
	// 第一个参数是旧文件名,第二个参数是新文件名
	err := os.Rename("./newMulv/soN1/c.vue", "./newMulv/soN1/c1.vue")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("改名成功")
}