这里是文章模块栏目内容页
go语言中常用的文件和文件夹操作函数
package main;
 
import (
    "os"
    "log"
    "time"
    "fmt"
)
 
//一些常用的文件操作函数
 
func main() {
    //创建目录
    //perm权限设置,os.ModePerm为0777
    err := os.Mkdir("./tmp", os.ModePerm);
    if err != nil {
        log.Fatal(err);
    }
 
    //创建多级目录
    err2 := os.MkdirAll("./a/b/c", os.ModePerm);
    if err2 != nil {
        log.Fatal(err2);
    }
 
    //等个3秒,看目录是否创建成功
    time.Sleep(time.Second * 3);
 
    //删除目录
    //如果目录下有文件或其他目录会出错
    err3 := os.Remove("./tmp");
    if err3 != nil {
        log.Fatal(err3);
    }
 
    //删除多级目录
    //如果是单个名称,则删除所有子目录
    err4 := os.RemoveAll("./a/b/c");
    if err4 != nil {
        log.Fatal(err4);
    }
 
    //文件操作
    //创建文件
    //Create会返回一个文件对象,默认权限0666
    file1, err5 := os.Create("./1.log");
    defer file1.Close();
    if err5 != nil {
        log.Fatal(err5);
    }
 
    //通过文件描述符(文件句柄)来创建文件
    file2 := os.NewFile(file1.Fd(), "./2.log");
    defer file2.Close();
 
    //打开文件
    //Open内部调用OpenFile,以只读方式打开
    file3, err6 := os.Open("./1.txt");
    defer file3.Close();
    if err6 != nil {
        log.Fatal(err6);
    }
 
    //OpenFile指定文件打开方式,只读,只写,读写和权限
    file4, err7 := os.OpenFile("./2.txt", os.O_RDWR, 0666);
    defer file4.Close();
    if err7 != nil {
        log.Fatal(file4);
    }
 
    //向文件写入数据
    file4.Write([]byte("我写入数据"));
 
    //在指定位置写入数据
    file4.WriteAt([]byte("指定位置写入数据"), 1024);
 
    //直接写入string
    file4.WriteString("你好世界");
 
    //读取文件数据
 
    //将文件偏移量设置为开头
    file4.Seek(0, 0);
    tmp := make([]byte, 256);
    //Read读取数据到[]byte中
    for n, _ := file4.Read(tmp); n != 0; n, _ = file4.Read(tmp) {
        fmt.Println(string(tmp));
    }
 
    //ReadAt从off指定位置读取数据到[]byte中
    file4.Seek(0, 0);
    var off int64 = 0;
    for {
        n, _ := file4.ReadAt(tmp, off);
        off += int64(n);
        if n == 0 {
            break;
        }
 
        fmt.Println(string(tmp));
    }
 
    //删除文件
    //Go中删除文件和删除文件夹同一个函数
    err8 := os.Remove("./1.txt");
    if err8 != nil {
        log.Fatal(err8);
    }
}