Go语言的文件操作:如何读取/写入不同类型的文件? Go语言是一门高效且易于使用的编程语言,被广泛应用于各种领域。在Go语言中,文件操作是非常重要的一部分。无论是读取还是写入文件,都需要掌握一定的技巧和知识。本文将介绍如何在Go语言中读取/写入不同类型的文件。 读取文本文件 文本文件是最常见的文件类型之一,在Go语言中读取文本文件非常简单。我们可以使用bufio包中的Scanner类型来读取文本文件。 首先,我们需要用os包打开一个文件: ``` func main() { file, err := os.Open("test.txt") if err != nil { log.Fatal(err) } defer file.Close() } ``` 接下来,我们可以创建一个Scanner对象来逐行读取文件: ``` func main() { file, err := os.Open("test.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } } ``` 在这段代码中,我们使用bufio包中的NewScanner()函数来创建一个Scanner对象。然后通过Scan()方法逐行读取文件内容,并输出到控制台。 写入文本文件 在Go语言中,写入文本文件也非常简单。我们可以使用os包中的File类型来打开一个文件,然后使用fmt包来写入文件。 首先,我们需要用os包创建一个文件: ``` func main() { file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() } ``` 接下来,我们可以使用fmt包将内容写入文件: ``` func main() { file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() fmt.Fprintln(file, "Hello, world!") } ``` 在这段代码中,我们使用fmt.Fprintln()函数将字符串“Hello, world!”写入到文件中。 读取二进制文件 二进制文件是一种特殊的文件类型,通常用于存储二进制数据。在Go语言中读取二进制文件也非常简单。我们可以使用io/ioutil包中的ReadFile()函数来读取文件内容。 首先,我们需要用os包打开一个文件: ``` func main() { file, err := os.Open("test.bin") if err != nil { log.Fatal(err) } defer file.Close() } ``` 接下来,我们可以使用ioutil包中的ReadFile()函数读取文件内容,并将其存储在byte数组中: ``` func main() { file, err := os.Open("test.bin") if err != nil { log.Fatal(err) } defer file.Close() data, err := ioutil.ReadFile("test.bin") if err != nil { log.Fatal(err) } fmt.Printf("%x", data) } ``` 在这段代码中,我们使用ioutil包中的ReadFile()函数读取文件内容,并将其存储在data变量中。然后使用fmt包将data变量以16进制的形式输出到控制台。 写入二进制文件 在Go语言中,写入二进制文件也非常简单。我们可以使用os包中的File类型来打开一个文件,然后使用io包来写入文件。 首先,我们需要用os包创建一个文件: ``` func main() { file, err := os.Create("test.bin") if err != nil { log.Fatal(err) } defer file.Close() } ``` 接下来,我们可以使用io包将内容写入文件: ``` func main() { file, err := os.Create("test.bin") if err != nil { log.Fatal(err) } defer file.Close() data := []byte{0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21} _, err = file.Write(data) if err != nil { log.Fatal(err) } } ``` 在这段代码中,我们使用file.Write()函数将byte数组中的内容写入到文件中。 总结 本文介绍了如何在Go语言中读取/写入不同类型的文件,包括文本文件和二进制文件。无论是读取还是写入文件,都需要使用不同的函数和包。通过学习本文,相信读者已经掌握了如何在Go语言中进行文件操作的基本技巧。