Go-文件

打开文件 关闭文件

package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("C:/Users/pc/Desktop/1.txt")
	if err != nil {
		fmt.Println("err=", err)
	}
	fmt.Printf("file=%v", file)
	err = file.Close()
	if err != nil {
		fmt.Println("err=", err)
	}
}

image

当不存在文件时

image

带缓冲的Reader读文件

image

package main

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

func main() {
	file, err := os.Open("C:/Users/pc/Desktop/1.txt")
	if err != nil {
		fmt.Println("err=", err)
	}
	defer file.Close()
	reader := bufio.NewReader(file)
	for {
		str, err := reader.ReadString('\n')
		if err == io.EOF { //读取到文件的末尾
			break
		}
		fmt.Print(str)
	}
	fmt.Println("文件读取结束")
}

image

使用ioutil一次将整个文件读入到内存中

image

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	file := "C:/Users/pc/Desktop/1.txt"
	content, err := ioutil.ReadFile(file)
	//只适合文件比较小的情况
	if err != nil {
		fmt.Println("err=", err)
	}
	fmt.Printf("%v\n", string(content))
	fmt.Println("文件读取结束")
}

image

写文件操作

image

创建一个新文件,写入内容5句"hello, Gardon"

package main

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

func main() {
	filePath := "C:/Users/pc/Desktop/2.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		fmt.Printf("err=%v\n", err)
		return
	}

	defer file.Close()

	str := "hello Gardon\n"
	write := bufio.NewWriter(file)
	for i := 0; i < 5; i++ {
		write.WriteString(str)
	}
	write.Flush() //将缓存的数据写入到文件中
}

image

image

打开一个存在的文件中,将原来的内容覆盖成新的内容10句"你好,尚硅谷!"

package main

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

func main() {
	filePath := "C:/Users/pc/Desktop/2.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_TRUNC, 0666)
	if err != nil {
		fmt.Printf("err=%v\n", err)
		return
	}

	defer file.Close()

	str := "你好,尚硅谷!\n"
	write := bufio.NewWriter(file)
	for i := 0; i < 10; i++ {
		write.WriteString(str)
	}
	write.Flush() //将缓存的数据写入到文件中
}

image

打开一个存在的文件,在原来的内容追加内容'ABC! ENGLISH!'

package main

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

func main() {
	filePath := "C:/Users/pc/Desktop/2.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("err=%v\n", err)
		return
	}

	defer file.Close()

	str := "ABC! ENGLISH!\n"
	write := bufio.NewWriter(file)
	for i := 0; i < 10; i++ {
		write.WriteString(str)
	}
	write.Flush() //将缓存的数据写入到文件中
}

image

打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句"hello,北京!"

package main

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

func main() {
	filePath := "C:/Users/pc/Desktop/2.txt"
	file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("err=%v\n", err)
		return
	}

	defer file.Close()
	//读取
	reader := bufio.NewReader(file)
	for {
		str, err := reader.ReadString('\n')
		if err == io.EOF {
			break
		}
		fmt.Print(str)
	}
	//写入
	str := "hello,北京!\n"
	write := bufio.NewWriter(file)
	for i := 0; i < 5; i++ {
		write.WriteString(str)
	}
	write.Flush() //将缓存的数据写入到文件中
}

image

image

posted @ 2022-06-13 10:31  司砚章  阅读(24)  评论(0编辑  收藏  举报