Go文件操作(新建打开写入读取删除关闭)学习笔记

 更新时间:2024年01月18日 10:50:47   作者:wohu 程序员的自我进化  
这篇文章主要为大家介绍了Go文件操作(新建打开写入读取删除关闭)学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Go 操作文本文件

Go 操作文本文件时,与其它语言一样也有新建文件、打开文件、写文件、读文件、删除文件等操作,我们一起先看下 Go 操作文本文件的 API。

1. 新建文件

//返回 File 的内存地址, 错误信息;通过 os 库调用
func Create(name string) (file *File, err Error)
//返回文件的内存地址, 通过 os 库调用
func NewFile(fd    int, name string) *File

2. 打开文件

//返回 File 的内存地址, 错误信息;通过 os 库调用
func Open(name    string) (file *File, err Error)
//返回 File 的内存地址, 错误信息, 通过 os 库调用
func OpenFile(name string, flag    int, perm unit32)  (file *File, err Error)

3. 写入文件

//写入一个 slice, 返回写的个数, 错误信息, 通过 File 的内存地址调用
func (file    *File).Write(b []byte)  (n int, err Error)
//从 slice 的某个位置开始写入, 返回写的个数, 错误信息,通过 File 的内存地址调用
func (file    *File).WriteAt(b []byte, off int64) (n int, err Error)
//写入一个字符串, 返回写的个数, 错误信息, 通过 File 的内存地址调用
func (file    *File).WriteString(s string) (ret int, err Error)

4. 读取文件

//读取一个 slice, 返回读的个数, 错误信息, 通过 File 的内存地址调用
func (file    *File).Read(b []byte) (n int, err Error)
//从 slice 的某个位置开始读取, 返回读到的个数, 错误信息, 通过 File 的内存地址调用
func (file    *File).ReadAt(b []byte, off int64) (n int, err Error)

4. 删除文件

//传入文件的路径来删除文件,返回错误个数
func Remove(name string)    Error

5. 关闭文件

func (f *File) Close() error

使用示例

package main
import (
    "fmt"
    "os"
)
func main() {
    fileName := "/home/wohu/gocode/src/test.txt"
    writeFile(fileName)
    readFile(fileName)
}
func writeFile(fileName string) {
    file, err := os.Create(fileName)
    if err != nil {
        fmt.Println(err)
        return
    }
    for i := 0; i <= 5; i++ {
        outStr := fmt.Sprintf("%s:%d\n", "hello, world", i)
        file.WriteString(outStr)
        file.Write([]byte("abcd\n"))
    }
    file.Close()
}
func readFile(fileName string) {
    file, err := os.Open(fileName)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()
    buf := make([]byte, 1024)
    for {
        n, _ := file.Read(buf)
        if n == 0 {
            //0 表示到达EOF
            break
        }
        os.Stdout.Write(buf)
    }
}

输出结果:

wohu@wohu:~/gocode/src$ ls
github.com  golang.org  hello.go  test.txt
wohu@wohu:~/gocode/src$ cat test.txt 
hello, world:0
abcd
hello, world:1
abcd
hello, world:2
abcd
hello, world:3
abcd
hello, world:4
abcd
hello, world:5
abcd
wohu@wohu:~/gocode/src$ 

以上就是Go文件操作(新建打开写入读取删除关闭)学习笔记的详细内容,更多关于Go文件操作的资料请关注脚本之家其它相关文章!

相关文章

  • Go高级特性之并发处理http详解

    Go高级特性之并发处理http详解

    Golang 作为一种高效的编程语言,提供了多种方法来实现并发发送 HTTP 请求,本文将深入探讨 Golang 中并发发送 HTTP 请求的最佳技术和实践,希望对大家有所帮助
    2024-02-02
  • 基于go实例网络存储协议详解

    基于go实例网络存储协议详解

    这篇文章主要为大家介绍了基于go实例网络存储协议详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Go语言学习之将mp4通过rtmp推送流媒体服务的实现方法

    Go语言学习之将mp4通过rtmp推送流媒体服务的实现方法

    对音视频一直是小白,决定沉下心来,好好研究一下音视频知识,下面这篇文章主要给大家介绍了关于Go语言学习之将mp4通过rtmp推送流媒体服务的实现方法,需要的朋友可以参考下
    2022-12-12
  • go开源项目用户名密码验证的逻辑鬼才写法

    go开源项目用户名密码验证的逻辑鬼才写法

    这篇文章主要为大家介绍了go开源项目中发现的一个逻辑鬼才写法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 如何基于Golang实现Kubernetes边车模式

    如何基于Golang实现Kubernetes边车模式

    本文介绍了如何基于Go实现Kubernetes Sidecar模式,并通过实际示例演示创建Golang实现的微服务服务、Docker 容器化以及在 Kubernetes 上的部署和管理,感兴趣的朋友一起看看吧
    2024-08-08
  • Go并发之RWMutex的源码解析详解

    Go并发之RWMutex的源码解析详解

    RWMutex是一个支持并行读串行写的读写锁。RWMutex具有写操作优先的特点,写操作发生时,仅允许正在执行的读操作执行,后续的读操作都会被阻塞。本文就来从源码解析一下RWMutex的使用
    2023-03-03
  • golang去除多余的空格与换行符示例代码

    golang去除多余的空格与换行符示例代码

    Golang是一种强大的编程语言,提供了丰富的字符串处理功能,这篇文章主要给大家介绍了关于golang去除多余的空格与换行符的相关资料,需要的朋友可以参考下
    2023-10-10
  • golang通过mysql语句实现分页查询

    golang通过mysql语句实现分页查询

    这篇文章主要介绍了golang通过mysql语句实现分页查询,文章内容介绍详细,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-03-03
  • Go 并发实现协程同步的多种解决方法

    Go 并发实现协程同步的多种解决方法

    这篇文章主要介绍了Go 并发——实现协程同步的多种解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Goland调节字体大小的设置(编辑区,terminal区,页面字体)

    Goland调节字体大小的设置(编辑区,terminal区,页面字体)

    这篇文章主要介绍了Goland调节字体大小的设置(编辑区,terminal区,页面字体),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论