반응형
Go 언어로 작성한 파일찾기 프로그램 예제입니다. 검색하고자 하는 Directory와 파일명을 입력하면 찾는 프로그램입니다. 사용 방법은
filecheck.exe <검색Dir> <대상file>
과 같이 사용하면 되며, 아래 예시와 같이 사용하면 됩니다.

소스코드는 아래와 같습니다.
package main
import (
"fmt"
"os"
"path/filepath"
)
var (
targetFolder string
targetFile string
searchResult []string
)
func findFile(path string, fileInfo os.FileInfo, err error) error {
if err != nil {
fmt.Println(err)
return nil
}
absolute, err := filepath.Abs(path)
if err != nil {
fmt.Println(err)
return nil
}
if fileInfo.IsDir() {
fmt.Println("Searching directory ...", absolute)
testDir, err := os.Open(absolute)
if err != nil {
if os.IsPermission(err) {
fmt.Println("No permission to scan ...", absolute)
fmt.Println(err)
}
}
testDir.Close()
return nil
} else {
matched, err := filepath.Match(targetFile, fileInfo.Name())
//matched, err := filepath.Glob(targetFile)
if err != nil {
fmt.Println(err)
}
if matched {
add := "Found : " + absolute
searchResult = append(searchResult, add)
}
}
return nil
}
func main() {
if len(os.Args) != 3 {
fmt.Printf("USAGE : %s <target_directory> <target_file> \n", os.Args[0])
os.Exit(0)
}
targetFolder = os.Args[1]
targetFile = os.Args[2]
fmt.Println("Searching for [", targetFolder, "]")
testFile, err := os.Open(targetFolder)
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
defer testFile.Close()
testFileInfo, _ := testFile.Stat()
if !testFileInfo.IsDir() {
fmt.Println(targetFolder, " is not a directory!")
os.Exit(-1)
}
err = filepath.Walk(targetFolder, findFile)
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
fmt.Println("\n\nFound ", len(searchResult), " hits!")
fmt.Println("@@@@@@@@@@@@@@@@@@@@@@")
for _, v := range searchResult {
fmt.Println(v)
}
}
- 끝 -
반응형
'Programming > Golang' 카테고리의 다른 글
| Go언어 oracle 연결 (2) | 2020.03.26 |
|---|---|
| Gotk3를 이용한 go언어 GUI 개발 예제 (0) | 2020.03.16 |
| andlabs/ui 를 이용한 go언어 GUI개발 예제 (0) | 2020.03.16 |
| Go언어 초간단 async 예제 (0) | 2020.03.16 |
| Go언어 - liteIDE설치 및 실행 (2) | 2020.03.16 |