디렉토리 내의 모든 로그 파일을 읽으려고 합니다. 아래 코드는 파일 이름은 읽을 수 있지만 내용은 읽을 수 없습니다.
콘솔 출력
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()
filepath.abs()
将加入给定路径,在本例中为文件的基本名称,到当前工作目录。因此,返回的 abs
值将缺少文件路径的 ./logs/
는 지정된 경로(이 경우 파일의 기본 이름)를 현재 작업 디렉터리에 추가합니다. 따라서 반환된 abs
값에는 파일 경로의 ./logs/
세그먼트가 누락됩니다.
이 문제를 해결하려면 다음을 수행하세요.
으아악또는 fn
매개변수에 대한 파일 경로를 제공하는 filepath.walkdir
filepath.walkdir
,它提供了fn
을 사용할 수 있습니다.
위 내용은 golang은 디렉토리에 있는 로그 파일의 내용을 읽습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!