,作为一种编程语言,Go 具有广泛的内置功能,包括创建、读取和写入文本(.txt)文件等文件的功能。,文件是现代世界我们日常生活的重要组成部分。文本文件对于存储结构化的人类可读数据非常有用,而无需使用外部软件或数据库。,如果您想知道如何开始在Go中操作文本文件,那么本文是适合您的地方。,bufio 包是 Go 标准库的一部分,用于缓冲输入和输出操作,因此得名。 bufio 包基于 io.Reader 和 io.Writer 接口构建,它们广泛用于大多数 Go 标准包的实现。,bufio 包通过实现缓冲更进一步,使其对涉及文本数据的 IO 操作很有用。,要在您的程序中使用 bufio 包,您应该将它与其他包一起导入。,当您开始使用 Go 时,您可能听说过它包含作为程序员可能需要的一切。 为了与您的操作系统直接通信,有一个名为 os 的包,它提供了与平台无关的功能。,os 和 bufio 包使文本文件操作变得异常简单。,尽管 os 包的绝大多数函数都是类 Unix 的,但它们都采用 Go 风格的错误处理,这使得阅读错误消息和调试代码变得简单。,那么,如何在Go中操作包含文本的文件呢?,要从文本文件中读取数据,您需要调用 os 包的 Open() 函数,该函数接受要读取的文件名作为参数。 获取文件的另一种方法是使用 OpenFile() 函数。,Open() 和 OpenFile() 之间的主要区别在于它们的实现。 Open() 以只读模式打开文件(使用 O_RDONLY 标志),而 OpenFile() 通过接受三个参数来提供更大的灵活性,即:,下面的代码展示了如何使用 os.Open() 和 Scan() 从 Go 中的文本文件中读取数据, 在本例中,Scan() 在 Go for 循环中运行。,运行上面的代码,它会产生如下所示的输出:,
,从文件中读取文本的程序输出。,如果你只传入文件名而不是 Open() 或 OpenFile() 函数的路径以进行读取操作,Go 会假定文件在当前目录中,如果找不到则返回错误。 如果您需要处理当前目录之外的文件,您应该传入文件的路径。,bufio 包提供了一个缓冲的 Writer 接口,该接口存储数据字节并在 Flush() 函数的帮助下将它们写入文件。,下一个示例代码是读取文件的延续。 在此示例中,使用 O_WRONLY 和 O_APPEND 标志将数据写入现有的 linuxmi.txt。,将以下代码行添加到上面的程序中,在 main() 函数的右花括号之前:,完整程序的输出应如下所示:,
,程序的输出以读取和写入文本文件。,当您打开 linuxmi.txt 文件时,您还将看到文件末尾附加的新行,如下图所示:,
,Go 允许您处理各种文件,而不仅仅是文本文件。 有许多额外的内置库和函数用于处理来自文件的不同类型的数据,包括 JSON 和 CSV。,要查看它们在不同情况下的行为方式有何不同,您可以尝试可用于 OpenFile() 的各种标志和文件权限。
© 版权声明
文章版权归作者所有,未经允许请勿转载。