问题内容 我正在尝试读取目录内的所有日志文件,下面的代码能够读取文件名,但不能读取其内容。 控制台输出 ds-api-doc-.log false 2023/03/21 11:27:1
我正在尝试读取目录内的所有日志文件,下面的代码能够读取文件名,但不能读取其内容。
控制台输出
ds-api-doc-.log false
2023/03/21 11:27:11 open /Users/xxx/ds-api-doc.log: no such file or directory
files, err := ioutil.ReadDir("./logs/")
if err != nil {
log.Fatal(err)
}
fmt.Println(totalTicks)
for _, file := range files {
fmt.Println(file.Name(), file.IsDir())
abs, err := filepath.Abs(file.Name())
file, err := os.Open(abs)
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)
}
}
file.name()
仅返回该文件的基本名称文件。
filepath.abs()
将加入给定路径,在本例中为文件的基本名称,到当前工作目录。因此,返回的 abs
值将缺少文件路径的 ./logs/
段。
要解决此问题,您可以执行以下操作:
abs, err := filepath.abs(filepath.join("logs", file.name()))
或者,您可以使用 filepath.walkdir
,它提供了fn
参数的文件路径。
err := filepath.WalkDir("./logs/", func(path string, de fs.DirEntry, err error) error) {
if err != nil {
return err
} else if de.IsDir() {
return nil
}
file, err := os.Open(path)
// ...
return nil
})
--结束END--
本文标题: golang读取目录内的日志文件内容
本文链接: https://lsjlt.com/news/561262.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0