Golang 如何读写文件

Golang 如何读写文件

Golang提供了一个广泛的内置库,可以用来对文件执行读写操作。为了从本地系统上的文件读取,可以利用 io/ioutil 模块。此外, io/ioutil 模块也用于将内容写入文件。

fmt 模块实现了带有从标准输入读取输入和将输出打印到标准输出的格式化I/O功能。而 log 模块则实现了简单的日志包。它定义了一个名为Logger的类型,包含用于格式化输出的方法。而 os 模块提供了访问本地操作系统特性的功能。而 bufio 模块则实现了带缓冲的I/O,有助于提高CPU性能。

  • os.Create(): os.Create()方法用于创建具有所需名称的文件。如果已经存在同名的文件,则create函数会截断该文件。
  • ioutil.ReadFile(): ioutil.ReadFile()方法将文件路径作为唯一的参数。该方法返回文件的数据或错误。
  • ioutil.WriteFile(): ioutil.WriteFile()用于将数据写入文件。WriteFile()方法接受3个不同的参数,第一个是我们想要写入的文件的位置,第二个是数据对象,第三个是FileMode,表示文件的模式和权限位。
  • log.Fatalf: Fatalf将在打印日志消息后导致程序终止。它等同于Printf()接着调用os.Exit(1)。
  • log.Panicf: Panic类似于可能在运行时出现的异常。Panicln等价于Println()接着调用panic()。当程序终止时,传递给panic()的参数将被打印出来。
  • bufio.NewReader(os.Stdin): 该方法返回一个新的Reader,其缓冲区的默认大小为4096字节。
  • inputReader.ReadString(‘\n’): 该方法用于从stdin读取用户输入,并读取到输入的第一个分隔符为止,返回一个包含数据(包括分隔符)的字符串。如果在找到分隔符前遇到错误,则返回遇到错误前读取的数据和错误本身。

示例1: 使用离线编译器以获得更好的结果。使用go扩展名将文件保存。使用以下命令执行程序。

go run filename.go
Go
// Golang程序,用于读写文件
package main
 
// 导入包
import (
    "fmt"
    "io/ioutil"
    "log"
    "os"
)
 
func CreateFile() {
 
    // fmt包实现了格式化的I/O操作,拥有Printf和Scanf等函数
    fmt.Printf("在Go语言中写入文件\n")
     
    // 在有错误时,程序的执行会被终止并返回错误信息,使用Fatalf方法
    file, err := os.Create("test.txt")
     
    if err != nil {
        log.Fatalf("创建文件失败: %s", err)
    }
     
    // defer语句用于清理任务,例如在文件写入完成后关闭正在使用的文件
    defer file.Close()
     
    // len变量记录已经写入文件的字符串长度
    len, err := file.WriteString("欢迎来到GeeksforGeeks。这个程序演示了在Go语言中进行读写操作。")
 
    if err != nil {
        log.Fatalf("写入文件失败: %s", err)
    }
 
    // Name()方法返回文件名称
    fmt.Printf("\n文件名: %s", file.Name())
    fmt.Printf("\n长度: %d 字节", len)
}
 
func ReadFile() {
 
    fmt.Printf("\n\n在Go语言中读取文件\n")
    fileName := "test.txt"
     
    // ioutil包拥有ReadFile等内置函数,用于读取文件名并返回内容
    data, err := ioutil.ReadFile("test.txt")
    if err != nil {
        log.Panicf("从文件中读取数据失败: %s", err)
    }
    fmt.Printf("\n文件名: %s", fileName)
    fmt.Printf("\n大小: %d 字节", len(data))
    fmt.Printf("\n数据: %s", data)
 
}
 
// 主函数
func main() {
 
    CreateFile() // 创建文件
    ReadFile() // 读取文件
} 
Go

输出结果:

Golang 如何读写文件

示例 2: 一个Golang程序,用于接收用户输入并读写文件。

// Golang程序读取和写入文件
package main

// 导入所需的包
import (
    "bufio"
    "fmt"
    "io/ioutil"
    "log"
    "os"
)

func CreateFile(filename, text string) {

    // fmt包实现格式化的输入/输出,内置了Printf和Scanf等方法
    fmt.Printf("使用Go语言写入文件\n")

    // 使用Create()方法创建文件并使用用户输入的文件名,将错误存入err变量中
    file, err := os.Create(filename)

    if err != nil {
        log.Fatalf("创建文件失败: %s", err)
    }

    // 程序执行完主函数后,关闭正在运行的文件并完成文件写入
    defer file.Close()

    // 使用WriteString()方法向文件写入数据,该方法返回字符串的长度
    len, err := file.WriteString(text)
    if err != nil {
        log.Fatalf("向文件写入数据失败: %s", err)
    }

    fmt.Printf("\n文件名: %s", file.Name())
    fmt.Printf("\n长度: %d 字节", len)
}

func ReadFile(filename string) {

    fmt.Printf("\n\n使用Go语言读取文件\n")

    // 使用ioutil包的ReadFile()方法读取文件
    data, err := ioutil.ReadFile(filename)

    // 如果出现错误,打印错误信息并停止程序
    if err != nil {
        log.Panicf("从文件读取数据失败: %s", err)
    }
    fmt.Printf("\n文件名: %s", filename)
    fmt.Printf("\n文件大小: %d 字节", len(data))
    fmt.Printf("\n数据: %s", data)

}

// 主函数
func main() {

    // 用户输入文件名
    fmt.Println("输入文件名: ")
    var filename string
    fmt.Scanln(&filename)

    // 用户输入文件内容
    fmt.Println("输入内容: ")
    inputReader := bufio.NewReader(os.Stdin)
    input, _ := inputReader.ReadString('\n')

    // 创建文件并读取文件
    CreateFile(filename, input)
    ReadFile(filename)
} 
Go

输出:

Golang 如何读写文件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册