golang閬嶅巻鏂囦欢澶规€庝箞瀹炵幇
鍦℅o璇█涓紝鍙互浣跨敤`filepath.Walk`鍑芥暟鏉ラ亶鍘嗘枃浠跺す銆俙filepath.Walk`鍑芥暟浼氶€掑綊鍦伴亶鍘嗘寚瀹氱殑鏂囦欢澶瑰強鍏跺瓙鏂囦欢澶癸紝骞跺姣忎釜鏂囦欢鎴栨枃浠跺す鎵ц涓€涓寚瀹氱殑鍑芥暟銆?br/>涓嬮潰鏄竴涓畝鍗曠殑绀轰緥锛屾紨绀哄浣曚娇鐢╜filepath.Walk`鍑芥暟閬嶅巻鏂囦欢澶瑰苟鎵撳嵃鍑烘墍鏈夋枃浠剁殑璺緞锛?br/>```go
package main
import (
"fmt"
"os"
"path/filepath"
)
func visit(path string, info os.FileInfo, err error) error {
if err != nil {
fmt.Printf("閬嶅巻鏂囦欢澶瑰嚭閿? %v\n", err)
return err
}
if info.IsDir() {
fmt.Printf("鏂囦欢澶? %s\n", path)
} else {
fmt.Printf("鏂囦欢: %s\n", path)
}
return nil
}
func main() {
root := "/path/to/folder" // 鎸囧畾瑕侀亶鍘嗙殑鏂囦欢澶硅矾寰?br/>
err := filepath.Walk(root, visit)
if err != nil {
fmt.Printf("鏃犳硶閬嶅巻鏂囦欢澶? %v\n", err)
}
}
```
鍦ㄤ笂闈㈢殑绀轰緥涓紝`visit`鍑芥暟鏄垜浠湪閬嶅巻杩囩▼涓姣忎釜鏂囦欢鎴栨枃浠跺す鎵ц鐨勫嚱鏁般€俙visit`鍑芥暟鐨勫弬鏁板寘鎷綋鍓嶆枃浠舵垨鏂囦欢澶圭殑璺緞锛坄path`锛夈€佹枃浠舵垨鏂囦欢澶圭殑淇℃伅锛坄info`锛変互鍙婂彲鑳藉彂鐢熺殑閿欒锛坄err`锛夈€?br/>鍦╜visit`鍑芥暟涓紝鎴戜滑棣栧厛妫€鏌ユ槸鍚︽湁閿欒鍙戠敓銆傜劧鍚庯紝鎴戜滑妫€鏌ュ綋鍓嶆枃浠舵垨鏂囦欢澶规槸鍚︽槸涓€涓枃浠跺す锛堥€氳繃`info.IsDir()`鍑芥暟鏉ュ垽鏂級銆傚鏋滄槸鏂囦欢澶癸紝鎴戜滑鎵撳嵃鍑烘枃浠跺す鐨勮矾寰勶紱濡傛灉鏄枃浠讹紝鎴戜滑鎵撳嵃鍑烘枃浠剁殑璺緞銆?br/>鏈€鍚庯紝鍦╜main`鍑芥暟涓紝鎴戜滑鎸囧畾瑕侀亶鍘嗙殑鏂囦欢澶硅矾寰勶紝骞惰皟鐢╜filepath.Walk`鍑芥暟鏉ヨ繘琛岄亶鍘嗐€傚鏋滈亶鍘嗚繃绋嬩腑鍙戠敓閿欒锛屾垜浠墦鍗板嚭閿欒淇℃伅銆?br/>璇锋敞鎰忔浛鎹㈢ず渚嬩唬鐮佷腑鐨刞/path/to/folder`涓轰綘鎯宠閬嶅巻鐨勬枃浠跺す璺緞銆?/p>
相关问答