Golang程序 计算文件中存在的行数

Golang程序 计算文件中存在的行数

在Go编程语言中,文件是一种命名的资源,用于存储数据,可以从中读取或写入。它为程序提供了一种保存数据的方法,即使在程序执行完毕后也是如此。在这篇文章中,我们将讨论不同的方法,利用这些方法我们可以计算文件中的行数。

方法1:使用一个用户定义的函数

在这个方法中,我们将写一个go语言程序,通过使用bufio、fmt和os包来计算文件中的行数。

算法

  • 第1步 – 首先,我们需要导入fmt、bufio和os包。

  • 第2步 – 现在,启动主函数。在main()中创建一个新的文件,并将其存储在一个变量中。

  • 第3步 – 如果在此过程中发生任何错误,那么将其存储在一个名为err的变量中,并将其打印在屏幕上。

  • 第4步 – 现在,为了向这个文件写入内容,使用Bufio包中的NewWriter()函数,并使用另一个函数WriteString()来向文件输入字符串值。

  • 第5步 – 现在,使用Open()函数打开文件,并使用scan()函数来读取文件中的数据。

  • 第6步 – 再次使用for循环来迭代文件中的数据,并在每次获取新行时增加计数变量。

  • 第7步 – 一旦迭代完成,count变量就包含了该文件中的行数。

  • 第8步 – 最后,我们需要使用fmt.Println()函数在屏幕上打印这个结果。

例子1

在下面的例子中,我们将使用用户定义的函数来计算文件中的行数

package main
import (
   "bufio"
   "fmt"
   "os"
)

func main() {
   // creating a new file
   file, err := os.Create("newFile.txt")
   if err != nil {
      fmt.Println(err)
      return
   }
   defer file.Close()

   // writing data in the file
   writer := bufio.NewWriter(file)
   _, err = writer.WriteString("Hello, World!\n this is the first line\n followed by the second line\n and the third one")
   if err != nil {
      fmt.Println(err)
      return
   }
   err = writer.Flush()
   if err != nil {
      fmt.Println(err)
      return
   }

   // fetching the file
   file, err = os.Open("newFile.txt")
   if err != nil {
      fmt.Println(err)
      return
   }
   defer file.Close()

   scanner := bufio.NewScanner(file)
   scanner.Split(bufio.ScanLines)

   // getting the number of lines
   var count int
   for scanner.Scan() {
      count++
   }
   if err := scanner.Err(); err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println("Number of lines in file:", count)
}

输出

Number of lines in file: 4

方法2:通过使用内部函数

在这个方法中,我们将写一个go语言程序,通过使用内部库函数来计算一个文件中的行数。

语法

func len(v Type) int

len()函数是用来获取任何参数的长度的。它将一个参数作为我们希望找到其长度的数据类型变量,并返回该变量长度的整数值。

func Split(str, sep string) []string

Split()函数用于通过提供的分隔符来分割一个字符串。这个函数存在于strings包中,它接受要分割的字符串和分隔符作为一个参数。然后,该函数返回最终的字符串数组作为结果。

算法

  • 第1步 – 首先,我们需要导入所需的包。

  • 第2步 – 现在,启动主函数。在main()里面创建一个新文件,并将其存储在一个变量中。

  • 第3步 – 现在,为了写入这个文件,使用函数WriteString()并输入字符串值到文件中。

  • 第4步 – 现在,使用ioutil软件包中的ReadFile()函数打开文件,读取文件中的数据。

  • 第5步 – 使用split()函数计算行数并将其打印在屏幕上。

例子1

在这个例子中,我们将学习如何使用内部函数,如 writestring() 来计算文件中的行数。

package main
import (
   "bufio"
   "fmt"
   "io/ioutil"
   "os"
   "strings"
)

func main() {
   // creating a new file
   file, err := os.Create("newFile.txt")
   if err != nil {
      fmt.Println(err)
      return
   }
   defer file.Close()

   // writing data in the file
   writer := bufio.NewWriter(file)
   _, err = writer.WriteString("Hello, World!\n this is the first line\n followed by the second line\n and the third one\n and a new one")
   if err != nil {
      fmt.Println(err)
      return
   }
   err = writer.Flush()
   if err != nil {
      fmt.Println(err)
      return
   }

   // fetching the file
   data, err := ioutil.ReadFile("newFile.txt")
   if err != nil {
      panic(err)
   }
   lines := strings.Split(string(data), "\n")
   fmt.Printf("Number of lines: %d\n", len(lines))
}

输出

Number of lines: 5

例子2

在这个例子中,我们使用了 reader 包中的 ReadLine() 内置库函数,来编写一个 go 语言程序来计算一个给定文件的行数。

package main
import (
   "bufio"
   "fmt"
   "os"
)

func main() {
   // creating a new file
   file, err := os.Create("newFile.txt")
   if err != nil {
      fmt.Println(err)
      return
   }
   defer file.Close()

   // writing data in the file
   writer := bufio.NewWriter(file)
   _, err = writer.WriteString("Hello, World!\n this is the first line\n followed by the second line\n and the third one\n and a new one")
   if err != nil {
      fmt.Println(err)
      return
   }
   err = writer.Flush()
   if err != nil {
      fmt.Println(err)
      return
   }
   file, err = os.Open("newFile.txt")
   if err != nil {
      panic(err)
   }
   defer file.Close()

   reader := bufio.NewReader(file)
   lineCount := 0
   for {
      _, _, err := reader.ReadLine()
      if err != nil {
         break
      }
      lineCount++
   }
   fmt.Printf("Number of lines: %d\n", lineCount)
}

输出

Number of lines: 5

结论

在第一个例子中,我们使用了一个使用定义的函数,而在第二个方法中,我们使用了两个内部函数的例子来计算一个文件中存在的行数

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程