文件操作

使用Fprintln追加字符串到文件末尾

package main

import (
    "fmt"
    "os"
)

func main() {
    f,err := os.Create("test.txt")
    defer f.Close()
    if err != nil{
        return
    }
    if err!=nil{
        fmt.Println(err)
    }
    fmt.Fprintln(f,"sss")

}

分区读取的正确操作

package main

import (
    "bufio"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    f, err := os.Open("test.go")
    if err != nil {
        log.Fatal(err)
    }
    r := bufio.NewReader(f)
    b := make([]byte, 256)
    for {
        n, err := r.Read(b) //返回该次读取的字符个数
        if n == 0 && err == io.EOF {
            break
        }else if err != nil{
            break
        }

        fmt.Print(string(b[:n]))
    }
}
package main

import (
    "io"
    "os"
)

func main() {
    f, _ := os.OpenFile("./test/1.txt", os.O_WRONLY, 0644) //以读写方式打开文件
    off,_ := f.Seek(5,io.SeekCurrent) //io.SeekCuurent从当前位置偏移5个,返回值off表示相对于文件起始位置的偏移量 ios.SeekStart起始位置,io.SeekEnd//结束位置
    f.WriteString("helloworld11111111")
    f.WriteAt([]byte("nihao"), 10) 表示写到相对初始位置偏移量为10的位置
    defer f.Close()
}

文件内容的拷贝,记住读多少写多少

package main

import (
    "fmt"
    "io"
    "os"
)

func test(s []int) {
    fmt.Printf("%p", &s)
}

func main() {
    fr, err := os.OpenFile("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test/1.txt", os.O_RDONLY, 0644)
    if err != nil {
        fmt.Println("open err", err)
        return
    }
    defer fr.Close()
    fw, err := os.Create("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test/2.txt")
    if err != nil {
        fmt.Println("create err", err)
        return
    }
    defer fw.Close()
    buf := make([]byte, 4096)
    for {
        n, err := fr.Read(buf)
        if err != nil && err == io.EOF {
            fmt.Println("已经读完")
            return
        }
        fw.Write(buf[:n]) //读多少写多少,如果直接写入,如果不是刚刚好读完4096,会把很多默认值写进去
    }
}

操作目录

package main

import (
    "fmt"
    "os"
)

func test(s []int) {
    fmt.Printf("%p", &s)
}

func main() {
    fr, err := os.OpenFile("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test", os.O_RDONLY, 0644)
    if err != nil {
        fmt.Println("open err", err)
        return
    }
    defer fr.Close()
    info, err := fr.Readdir(-1) //-1获取所有文件名
    for _, fileInfo := range info {
        if fileInfo.IsDir() {
            fmt.Printf("%s is dir\n", fileInfo.Name())
        } else {
            fmt.Printf("%s\n", fileInfo.Name())
        }
    }
}




posted @ 2019-12-19 19:49  离地最远的星  阅读(136)  评论(0编辑  收藏  举报