文件的操作主要有新建,打开,读写内容,复制,删除等,与文件操作有关的库包有io、ioutil、os、bufio等。

一、简单的读取已存在文件内容到[]byte或者字符串变量中,将一个[]byte或者字符串写入到一个文件中。








package main
import (
    "fmt"
    "io/ioutil"
    "os"
)
func main() {
    /********************用io/ioutil包实现读文件和写入文件**********************************/
    //读取一个文件内容到[]byte实例中
    b, err := ioutil.ReadFile("test.json")
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(b)
    fmt.Println(string(b))
   //将一个[]byte实例的内容写入到一个文件中
    err = ioutil.WriteFile("ioutil.json", b, 0777)
    if err != nil {
        fmt.Println(err)
    }


    /************************************用os包实现读文件和写入文件**********************************/
    //读取一个文件内容读到[]byte实例中
    file, err := os.Open("test.json")
    if err != nil {
       fmt.Println("an error has occurred when open file", err)
    }
    defer file.Close()
    b = make([]byte, 100)
    n, err := file.Read(b)
    fmt.Println(n, string(b))
    //将一个[]byte实例的内容写入到一个文件中
    createFile, _ := os.Create("createfile.json")
    if err != nil {
        fmt.Println("an error has occurred when open file", err)
    }
    defer file.Close()
    n, err = createFile.Write(b)
    if err != nil {
        fmt.Println(err)
    }
    //createFile.WriteString(string(b))
    fmt.Println(n)


/************************************用bufio包实现带缓冲的具体到行数据的操作**********************************/
 

    inFile, err := os.Open("test.txt")
    if err != nil {
        fmt.Println(err)
   }
    defer inFile.Close()
    outFile, err := os.Create("11.txt")
    if err != nil {
        fmt.Println(err)
    }
    defer outFile.Close()
    reader := bufio.NewReader(inFile)
    writer := bufio.NewWriter(outFile)
    eof := false
    for !eof {
        line, err := reader.ReadString('\n')//每次读取到换行的地方
        if err == io.EOF {
            err = nil
            eof = true
        } else if err != nil {
            fmt.Println(err)
        }
        _, err = writer.WriteString(line)
        if err != nil {
            fmt.Println(err)
        }
        writer.Flush()//将缓冲区的数据写入到io.Writer接口
    }
}


09-06 17:55