1. 程式人生 > >Go 文件操作

Go 文件操作

fail ntb UNC urn www http turn val iou

1、普通版讀取文件內容:

package main

import (
    "path/filepath"
    "os"
    "log"
    "io"
    "fmt"
)

func main() {

    path, err := filepath.Abs("./")
    if err != nil {
        panic(err)
    }

    filePath := path + "/day6/filehandler/openfile.go"

    file, err := os.Open(filePath)
    if err != nil {
        log.Printf(
"Open file: %s failed, err: %s\v", filePath, err) return } defer file.Close() var content []byte var buf[4096]byte for { n, err := file.Read(buf[:]) if err != nil && err != io.EOF { log.Printf("read file: %s failed, err: %s\n", filePath, err)
return } if err == io.EOF { break } fmt.Println("the buff n value is :", n) validBuf := buf[0:n] content = append(content, validBuf...) } fmt.Printf("the file content is: %s\n", content) }

2、ioutil版讀取文件內容:

import (
    "path/filepath
" "io/ioutil" "log" "fmt" ) func main() { path, err := filepath.Abs("./") if err != nil { panic(err) } filePath := path + "/day6/filehandler/normalReadFile.go" contentBytes, err := ioutil.ReadFile(filePath) if err != nil { log.Printf("read file ‘%s‘ failed, err : %v\n", filePath, err) return } fmt.Printf("the file content: %s\n", contentBytes) }

3、bufio版讀取文件內容 ( bufio介紹 http://www.okyes.me/2016/05/30/go-bufio.html)

package main

import (
    "path/filepath"
    "os"
    "log"
    "bufio"
    "io"
    "fmt"
)

func main() {

    path, err := filepath.Abs("./")
    if err != nil {
        panic(err)
    }

    filePath := path + "/day6/filehandler/normalReadFile.go"
    file, err := os.Open(filePath)
    if err != nil {
        log.Printf("Open file: %s failed, err: %s\v", filePath, err)
        return
    }
    defer file.Close()

    reader := bufio.NewReader(file)
    var content []byte
    var buf[4096]byte
    for {
        n, err := reader.Read(buf[:])
        if err != nil && err != io.EOF {
            log.Printf("Read file ‘%s‘ failed, err: %s\v", filePath, err)
            return
        }
        if err == io.EOF {
            break
        }

        validBuf := buf[0:n]
        content = append(content, validBuf...)
    }

    fmt.Printf("the file content is: %s", content)

}

Go 文件操作