标签:++ bsp 进制 var main 读写 nil 执行 color
文件分为文本文件 和 二进制文件
os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err。对得到的文件实例调用 close() 方法能够关闭文件。
package main import ( "fmt" "os" ) func main(){ // 只读方式打开当前目录下的 main.go 文件 file, err := os.Open("./main.go") if err != nil { fmt.Println("open file failed!,err:",err) return } // 关闭文件 defer file.Close() //为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。 }
Read方法定义如下:
func (f *File) Read(b []byte) (n int, err error)
func main(){ // 只读方式打开当前目录下的main.go 文件 file, err := os.Open("./main.go") if err != nil{ fmt.Prinln("Open file failed!,err:",err) return } defer file.Close() // 循环读取文件 var content []byte var tmp = make([]byte,128) for { n, err := file.Read(tmp) if err == io.EOF { fmt.Prinln("文件读完了") break } if err != nil{ fmt.Println("read file failed,err:",err) return } content = append(content,tmp[:n]...) } fmt.Prinln(string(content)) }
bufio是在file的基础上封装了一层API,支持更多的功能。
package main import ( "bufio" "fmt" "io" "os" ) // bufio按行读取示例 func main() { file, err := os.Open("./xx.txt") if err != nil { fmt.Prinln("open file failed, err:",err) return } defer file.Close() reader := bufio.NewReader(file) for { line, err := reader.ReadString(‘\n‘) //注意是字符 if err == io.EOF { if len(line) != 0{ fmt.Prinln(line) } fmt.Println("文件读完了") break } if err != nil { fmt.Println("read file failed, err:",err) return } fmt.Print(line) } }
io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。
package main import ( "fmt" "io/ioutil" ) // ioutil.ReadFile 读取整个文件 func main() { content, err := ioutil.ReadFile("./main.go") if err != nil { fmt.Println("read file failed, err:",err) return } fmt.Println(string(content)) }
os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。
func OpenFile(name string, flag int, perm FileMode) (*File,error){ ... }
其中:
name: 要开打的文件名 flag : 打开文件的模式。 模式有以下几种:
os.O_WRONLY 只写
os.O_CREATE 创建文件
os.O_RDONLY 只读
os.O_RDWR 读写
os.O_TRUNC 清空
os.O_APPEND 追加
perm: 文件权限,一个八进制数。 r(读) 04, w (写) 02 , x(执行) 01。
func main() { file, err := os.OpenFile("xx.txt",os.O_CREATE|os.O_TRUNC|os.O_WRONLY,0666) if err != nil { fmt.Prinln("open file failed,err:",err) return } defer file.Close() str := "hello 沙河" file.Write([]byte(str)) //写入字节切片数据 file.WriteString("hello 小王子") //直接写入字符串数据 }
func main() { file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) if err != nil { fmt.Println("open file failed, err:", err) return } defer file.Close() writer := bufio.NewWriter(file) for i := 0; i < 10; i++ { writer.WriteString("hello沙河\n") //将数据先写入缓存 } writer.Flush() //将缓存中的内容写入文件 }
func main() { str := "hello 沙河" err := ioutil.WriteFile("./xx.txt",[]byte(str),0666) if err != nil { fmt.Prinln(‘write file failed,err:",err) return } }
标签:++ bsp 进制 var main 读写 nil 执行 color
原文地址:https://www.cnblogs.com/s686zhou/p/12774189.html