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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!