美文网首页
go 写文件操作

go 写文件操作

作者: wayyyy | 来源:发表于2022-10-24 00:28 被阅读0次
一次将全部内容写入文件
package main

import (
    "fmt"
    "os"
)

func main() {
    err := os.WriteFile("1.txt", []byte("hello world"), 0666)
    if err != nil {
        fmt.Println("failed")
    }
}

将文本数据逐行写入文件

如果您将文件的行放在单独的变量、数组中,或者想在写入一行之前进行一些处理,则可以使用该func (*File) WriteString()方法逐行写入数据。您需要做的就是创建一个文件,将字符串写入其中,最后关闭该文件。

package main

import (
    "log"
    "os"
)

var lines = []string{
    "Go",
    "is",
    "the",
    "best",
    "programming",
    "language",
    "in",
    "the",
    "world",
}

func main() {
    // create file
    f, err := os.Create("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    // remember to close the file
    defer f.Close()

    for _, line := range lines {
        _, err := f.WriteString(line + "\n")
        if err != nil {
            log.Fatal(err)
        }
    }
}
将字节数据写入文件

与逐行写入字符串一样,我们也可以使用func (*File) Write()方法写入字节数据,或者func (*File) WriteAt()如果您想以给定的偏移量写入数据。

package main

import (
    "log"
    "os"
)

var bytes = []byte{
    0x47, // G
    0x4f, // O
    0x20, // <space>
    0x20, // <space>
    0x20, // <space>
    0x50, // P
    0x4c, // L
    0x45, // E
    0x53, // S
}

var additionalBytes = []byte{
    0x53, // S
    0x41, // A
    0x4d, // M
}

func main() {
    // create file
    f, err := os.Create("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    // remember to close the file
    defer f.Close()

    // write bytes to the file
    _, err = f.Write(bytes)
    if err != nil {
        log.Fatal(err)
    }

    // write additional bytes to the file, start at index 2
    _, err = f.WriteAt(additionalBytes, 2)
    if err != nil {
        log.Fatal(err)
    }
}
将格式化后的字符串写入文件

除了File方法之外,我们还可以使用fmt.Fprintln()函数将数据写入文件。此函数格式化其操作数,在它们之间添加空格,在末尾添加一个新行,并将输出写入 writer(第一个参数)。它非常适合简单的行格式化或将 a 的字符串表示形式写入struct文件。

package main

import (
    "fmt"
    "log"
    "os"
)

var lines = []string{
    "Go",
    "is",
    "the",
    "best",
    "programming",
    "language",
    "in",
    "the",
    "world",
}

func main() {
    // create file
    f, err := os.Create("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    // remember to close the file
    defer f.Close()

    for _, line := range lines {
        _, err := fmt.Fprintln(f, "*", line, "*")
        if err != nil {
            log.Fatal(err)
        }
    }
}
使用缓冲buffer 的方式写入文件

如果您经常将少量数据写入文件,则会降低程序的性能。每次写入都是一个代价高昂的系统调用,如果您不需要立即更新文件,最好将这些小写入归为一个。为此,我们可以使用bufio.Writer结构。它的写入函数不会直接将数据保存到文件中,而是一直保存到下面的缓冲区已满(默认大小为 4096 字节)或Flush()调用该方法。所以一定要Flush()在写入完成后调用,将剩余的数据保存到文件中。

package main

import (
    "bufio"
    "log"
    "os"
)

var lines = []string{
    "Go",
    "is",
    "the",
    "best",
    "programming",
    "language",
    "in",
    "the",
    "world",
}

func main() {
    // create file
    f, err := os.Create("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    // remember to close the file
    defer f.Close()

    // create new buffer
    buffer := bufio.NewWriter(f)

    for _, line := range lines {
        _, err := buffer.WriteString(line + "\n")
        if err != nil {
            log.Fatal(err)
        }
    }

    // flush buffered data to the file
    if err := buffer.Flush(); err != nil {
        log.Fatal(err)
    }
}

相关文章

  • Golang 系统调用 syscall

    对于写后端语言来说的人,文件操作是很常见的。go对文件操作的支持非常的好。今天通过go中文件操作记录下syscal...

  • go 写文件操作

    一次将全部内容写入文件 将文本数据逐行写入文件 如果您将文件的行放在单独的变量、数组中,或者想在写入一行之前进行一...

  • vscode使用指南(文件快速导航)

    编写文件操作 快速打开文件目录列表 go to Definition go to type definition ...

  • Go文件操作

    http://www.cnblogs.com/sevenyuan/archive/2013/02/28/29372...

  • go 文件操作

    File 建立File内存地址 打开文件 写文件 读文件 删除文件 判断文件是否存在 file写文件 file读文...

  • 49.超赞的 Go 语言 INI 文件操作

    超赞的 Go 语言 INI 文件操作

  • 《Go语言四十二章经》第三十一章 文件操作与IO

    《Go语言四十二章经》第三十一章 文件操作与IO 作者:李骁 31.1 文件系统 对于文件和目录的操作,Go主要在...

  • Golang 文件操作

    参考Golang文件操作整理golang中的文件读写 一、API 参考Go语言学习笔记(五)文件操作 1.os.F...

  • Go语言文件操作

    文件的打开和关闭 os包中提供了方法叫做Open,就是专门用于打开某一个文件的 注意点:如果文件不存在不会自动创建...

  • Go语言文件操作

    如何打开和关闭文件 在Go语言中的OS包提供了一个函数,叫做open,就是专门用来打开文件的 在Go语言中OS包中...

网友评论

      本文标题:go 写文件操作

      本文链接:https://www.haomeiwen.com/subject/wlvwzrtx.html