码迷,mamicode.com
首页 > 其他好文 > 详细

Go 文件 读写

时间:2020-07-02 19:57:01      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:取整   i++   hello   mode   perm   ror   函数   package   efi   

可以从文件读写,也可以从标准输入流读,写到控制台

import (
    "fmt"
    "bufio"
    "os"
)

func main() {
    var s string
    reader := bufio.NewReader(os.Stdin)
    fmt.Printf("输入>> ")
    s,_ = reader.ReadString(‘\n‘)
    fmt.Println(s)
}

 

//  io包,按字节数读

func main() {
  // 只读方式打开当前目录下的main.go文件.返回*File,err
  file, _ := os.Open("./main.go")     //  打开失败err!=nil
  // 关闭文件
  defer file.Close()
  //var tmp = make([]byte, 128)
  for{
    var tmp [128]byte
    n, err := file.Read(tmp[:])            //  n为读到的字节数n=128,读取失败err!=nil,每次读128byte
    // fmt.Println(string(tmp[:n]))       //  读到的内容在tmp切片中
    fmt.Println(n)       // 每次循环读到的字节数
    if err == io.EOF{
      return
    }
  }
}

 

//bufio按行读

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

// bufio按行读取示例
func main() {
  file, _ := os.Open("./main.go")           // _为err
  defer file.Close()
  reader := bufio.NewReader(file)
  for {
    line, err := reader.ReadString(‘\n‘)                 //  注意line是字符, err != nil读取错误
    fmt.Print(line)
    if err == io.EOF {              //  读完了,再继续读,会出错err==io.EOF
    break
    }
  }
}

 

// ioutil.ReadFile读取整个文件

package main

import (
  "fmt"
  "io/ioutil"
)


func main() {
  content, err := ioutil.ReadFile("./main.go")   
  fmt.Println(string(content))
}

 

 写操作

os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。

 func OpenFile(name string, flag int, perm FileMode) (*File, error) {  // name:文件名,flag:打开文件的模式,perm:linux上的文件权限(755等)
  ...
}

 

 flag:模式有以下几种:

os.O_WRONLY        只写
os.O_CREATE         创建文件
os.O_RDONLY         只读
os.O_RDWR            读写
os.O_TRUNC          清空
os.O_APPEND        追加

 

//Write和WriteString

func main() {
  file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)       //用逻辑或操作"|"实现不同的组合
  defer file.Close()
  str := "hello"
  file.Write([]byte(str))     //写入字节切片数据
  file.WriteString("hello boy")    //直接写入字符串数据
}


//bufio.NewWriter

func main() {
  file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
  defer file.Close()
  writer := bufio.NewWriter(file)
  for i := 0; i < 10; i++ {
    writer.WriteString("hello boy\n")           //将数据先写入缓存
  }
  writer.Flush()      //将缓存中的内容写入文件
}


//ioutil.WriteFile

import (
  "io/ioutil"
)
func main() {
  str := "hello"
  err := ioutil.WriteFile("./xx.txt", []byte(str), 0666)
}

 

 

Go 文件 读写

标签:取整   i++   hello   mode   perm   ror   函数   package   efi   

原文地址:https://www.cnblogs.com/staff/p/13226576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!