go语言逐行读取文件
时间: 2024-07-24 18:01:42 浏览: 89
在Go语言中,你可以使用`bufio`包(bufio是缓冲输入/输出的包)来逐行读取文件。这里是一个简单的例子:
```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt") // 打开文件
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close() // 确保文件关闭
reader := bufio.NewReader(file) // 创建一个带缓冲的读取器
for {
line, isEnd, err := reader.ReadLine() // 逐行读取
if err == io.EOF { // 如果达到文件结束
break
} else if err != nil {
fmt.Println("Error reading line:", err)
return
}
fmt.Printf("Read line: %s\n", line) // 打印每一行内容
}
fmt.Println("Finished reading file.")
}
```
在这个示例中,`bufio.ReadLine()`会返回一行文本和一个布尔值,表示是否到达了文件的末尾。如果发生错误,比如文件不存在,它会返回一个非nil的error。
相关问题
go语言读取txt文件
在Go语言中,读取文本文件(txt文件)通常通过`os`和`io/ioutil`包或者`bufio`包来实现,这两个库提供了方便的文件操作功能。以下是两种常见的方法:
**方法一:使用`ioutil.ReadFile()`函数**
```go
package main
import (
"io/ioutil"
"log"
)
func main() {
content, err := ioutil.ReadFile("example.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(content))
}
```
这里我们直接读取整个文件内容并将其转换为字符串。
**方法二:使用`bufio.Scanner`分块读取**
```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Println(err)
}
}
```
这个例子中,我们使用`bufio.Scanner`逐行读取文件内容。
使用go语言实现读取域名列表文件检测网络联通
可以使用以下代码实现:
```go
package main
import (
"fmt"
"net"
"os"
)
func main() {
file, err := os.Open("domain_list.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
domain := scanner.Text()
_, err := net.LookupHost(domain)
if err != nil {
fmt.Println(domain, "is not reachable")
} else {
fmt.Println(domain, "is reachable")
}
}
if err := scanner.Err(); err != nil {
fmt.Println("Error scanning file:", err)
return
}
}
```
其中,`domain_list.txt`是一个包含多个域名的文本文件,每行一个域名。程序会逐行读取文件中的域名,并使用`net.LookupHost`函数检测域名是否可以联通。如果可以联通,则输出`is reachable`,否则输出`is not reachable`。
阅读全文