Go (一) 基础部分4 -- 文件处理

2023-12-13 03:30:50

一、文件基本介绍

1.1、打开一个文件

基本介绍:打开一个文件用于读取,如果操作成功,返回的文件对象的方法可用于读取文件数据。如果出错,错误底层类型是"*.PathError"

func Open(name string) (*File, error)

name string:打开的文件路径

*File:返回值1,文件对象

error:返回值2,错误err

1.2、关闭一个文件

基本介绍:语法如下

func (f *File) Close() error

(f *File) Close():文件对象的Close方法

error:返回值1,错误err

打开文件,关闭文件,快速入门案例:

package main

import (
	"fmt"
	"os"
)

func main() {
	// 打开一个文件(默认有2个返回值:文件对象,错误)
	file, err:=os.Open("sudada.log")
	// 如果err有值,则输出错误
	if err != nil {
		fmt.Println("打开文件失败,错误:",err)
	}

	// 通过文件对象file的值
	fmt.Println(file) // 返回值:&{0xc000100a00}
	fmt.Println(file.Name()) // 返回值:sudada.log

	// 关闭文件(默认有1个返回值:错误)
	close_err := file.Close()
	if close_err != nil {
		fmt.Println("打开文件失败,错误:",close_err)
	}
}

1.3、读文件内容

1.读取文件内容并显示在终端(带缓冲区的方式):使用bufio.NewReader(),reader.ReadString函数和方法。

步骤:先打开文件,然后读文件,最后关闭文件

package main

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

func main() {
	// 打开一个文件(有2个返回值:文件对象,错误)
	file, err:=os.Open("sudada.log")
	// 如果err有值,则输出错误
	if err != nil {
		fmt.Println("打开文件失败,错误:",err)
	}

	// 在函数要退出时,关闭文件
	defer file.Close()

	// 创建一个 *Reader,是带缓冲的(默认4096字节)
	reader := bufio.NewReader(file)
	// 循环读取文件的内容: reader.ReadString (有2个返回值:文件内容,错误)
	for {
		str,err := reader.ReadString('\n') // 读到"换行"就结束
		// 读到文件结尾时,就break
		if err == io.EOF {
			break
		}
		// 打印读取到的文件内容
		fmt.Print(str)
		// 返回值:hello world
		// 返回值:sudada
		// 返回值:beijing
	}
}

2.读取文件内容并显示在终端(使用ioutil一次将整个文件读入到内存中),这种方式适合小文件:使用ioutil.ReadFile函数

步骤:一次将文件读取到位

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	// 使用ioutil.ReadFile一次性将文件读取到位
	file := "sudada.log"
	content,err := ioutil.ReadFile(file)
	if err != nil {
		fmt.Println(err)
	}
	// 显示读取的内容
	fmt.Printf("%v",string(content))
	// hello world
	// sudada
	// beijing
	// shanghai
}

1.4、写文件

基本介绍:语法如下

func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

name string:打开的文件

flag int:文件打开的模式

只读模式
只写模式

读写模式

perm FileMode:文件的权限控制(linux)

file *File:返回值1,文件对象

err error:返回值2,错误err

快速入门案例:

文章来源:https://blog.csdn.net/sinat_29214327/article/details/134916440
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。