Go语言读取文件下的各种不同的文件
- 先读取获取指定路径文件夹
- 然后读取该路径下的所有的文件
- 然后挨个遍历这些文件
- 每遍历一个文件,就一行一行的读取。
下面直接上完整代码,copy到项目中就可以使用了
package main
import (
"bufio"
"errors"
"fmt"
"os"
"path/filepath"
"strings"
)
var result = make(map[string]string, 0)
func main() {
folderPath := "demo33-遍历读取每个文件/output"
files, err := os.ReadDir(folderPath)
if err != nil {
fmt.Println("Error:", err)
return
}
for k := range result {
delete(result, k)
}
for _, file := range files {
if !file.IsDir() {
filePath := filepath.Join(folderPath, file.Name())
f, err := os.Open(filePath)
if err != nil {
fmt.Printf("Error opening file %s: %s\n", filePath, err)
continue
}
scanner := bufio.NewScanner(f)
for scanner.Scan() {
str, err := SuberStr(scanner.Text())
if err != nil {
fmt.Println("截取数据源出错:" + err.Error())
continue
}
fmt.Println("读取到每一行内容:", str)
result[str] = str
}
if err := scanner.Err(); err != nil {
fmt.Printf("Error reading file %s: %s\n", filePath, err)
}
_ = f.Close()
}
}
fmt.Println(result)
}
func SuberStr(originalStr string) (string, error) {
spaceIndex := strings.Index(originalStr, " ")
if spaceIndex == -1 {
return "", errors.New("截取出来的长度等于-1,数据源不对!")
}
if spaceIndex+1 >= len(originalStr) {
return "", errors.New("不能截取,数据长度小于等于索引长度了")
}
urlPart := originalStr[spaceIndex+1:]
return urlPart, nil
}