写入内容到文件:
package main
import (
"fmt"
"os"
)
func WriteFile(path string) {
f, err := os.Create(path)
if err != nil {
fmt.Println("err = ", err)
return
}
defer f.Close()
var buf string
buf = "1234demodeodke"
n, err := f.WriteString(buf)
if err != nil {
fmt.Println("err = ", err)
}
fmt.Println(n)
}
func main() {
var path = "./demo.txt"
WriteFile(path)
}读取文件内容:
package main
import (
"fmt"
"io"
"os"
)
func WriteFile(path string) {
f, err := os.Create(path)
if err != nil {
fmt.Println("err = ", err)
return
}
defer f.Close()
var buf string
for i := 0; i < 10; i++ {
buf = fmt.Sprintf("i = %d\n", i)
// n 表示一次性写入内容的长度
n, err := f.WriteString(buf)
if err != nil {
fmt.Println("err = ", err)
}
fmt.Println(n)
}
}
func ReadFile(path string) {
f, err := os.Open(path)
if err != nil {
fmt.Println("err = ", err)
}
defer f.Close()
buf := make([]byte, 1024*2)
n, err := f.Read(buf) // n 表示读取内容的长度
// 没有错误且文件未结束
if err != nil && err != io.EOF {
fmt.Println("err = ", err)
}
fmt.Println(string(buf[:n]))
}
func main() {
var path = "./demo.txt"
// WriteFile(path)
ReadFile(path)
}按行读取文件:
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func ReadFileLine(path string) {
f, err := os.Open(path)
if err != nil {
fmt.Println("err = ", err)
return
}
defer f.Close()
r := bufio.NewReader(f) // 新建一个缓冲区,把内容放入缓冲区中
for {
buf, err := r.ReadBytes('\n') // 会把空格也一起读出来
if err != nil {
if err == io.EOF {
break
}
fmt.Println("err = ", err)
}
fmt.Println(string(buf))
}
}
func main() {
var path = "./demo.txt"
ReadFileLine(path)
}拷贝文件示例:
package main
import (
// "bufio"
"fmt"
"io"
"os"
)
func main() {
// 获取命令行参数
list := os.Args
if len(list) != 3 {
fmt.Println("usage: xxx src dest")
return
}
src := list[1]
dest := list[2]
if src == dest {
fmt.Println("文件名不能相同")
return
}
srcfile, err1 := os.Open(src)
if err1 != nil {
fmt.Println("err = ", err1)
return
}
destfile, err2 := os.Create(dest)
if err2 != nil {
fmt.Println("err = ", err2)
return
}
defer srcfile.Close()
defer destfile.Close()
buf := make([]byte, 4*1024) //4k的缓冲区
for {
n, err := srcfile.Read(buf)
if err != nil {
fmt.Println("err = ", err)
if err == io.EOF {
break
}
}
destfile.Write(buf[:n])
}
}