수년간 JavaScript 경험을 쌓은 프론트엔드 개발자로서 저는 이제 새로운 도전이 필요할 때라고 판단했습니다. 올해 저는 Golang의 세계에 뛰어들기로 결정했습니다. 내 기술을 테스트하고 무기고에 실용적인 도구를 추가하기 위해 혼란스러운 파일 관리에 질서를 부여하도록 설계된 명령줄 도구인 File Organizer를 만들었습니다. ?
방금 큰 프로젝트를 마쳤는데 디렉토리가 이미지, 오디오 파일, 비디오, 문서로 뒤죽박죽되어 있다고 상상해 보세요. 마치 집을 아름답게 장식했지만 모든 가구가 아무렇게나 버려져 있는 것과 비슷합니다. ? 저도 가봤는데 전혀 재미가 없어요!
이 모험의 첫 번째 부분에서는 Go에서의 파일 작업의 기본 사항에 중점을 두고 파일을 확장자에 따라 깔끔한 폴더로 정렬하고 구성하는 방법을 배웁니다. 다이빙할 준비가 되셨나요? 가자!
복잡한 디렉토리 때문에 당황한 적이 있나요? 이미지 파일, 오디오 클립, 비디오 및 문서가 모두 뒤섞여 있습니다. 수동으로 정렬하는 것은 건초 더미에서 바늘을 찾는 것과 같은 느낌이 들 수 있습니다. ?
우리는 이 혼란스러운 환경을 체계적인 천국으로 바꾸는 도구를 만들 예정입니다! 파일 정리 도구는 파일을 유형에 따라 자동으로 폴더로 분류합니다. 여기에는 이미지, 여기에는 오디오, 여기에는 비디오, 깔끔하게 정리된 문서가 있습니다. ?
우리가 이 놀라운 파일 정렬 기능을 만든 방법은 다음과 같습니다.
우리의 여정은 파일이 어디에 숨겨져 있는지 찾는 것부터 시작됩니다.
dir := os.Args[1]
이 줄은 우리 프로그램에 "야, 우리 파일로 가득 찬 디렉토리가 어디 있지?"라고 묻는 것과 같습니다. ?
다음으로 해당 디렉토리를 들여다보고 거기에 무엇이 있는지 확인해야 합니다.
files, err := os.ReadDir(dir) var filesToOrder []string if err != nil { log.Fatal(err) }
우리는 디렉토리의 내용을 읽고 디렉토리가 존재하지 않는 등 문제가 발생하면 프로그램을 중지하고 알려줍니다. ?
이제 디렉터리는 뒤에 두고 파일에 집중해야 합니다.
for _, file := range files { if file.IsDir() { continue } filesToOrder = append(filesToOrder, file.Name()) }
여기서는 각 항목을 반복해서 살펴봅니다. 디렉터리라면 건너뜁니다. 파일인 경우 정리할 파일 목록에 추가합니다. ?️
파일 목록이 준비되었으면 이제 파일을 새 홈으로 정렬할 차례입니다.
for _, fileName := range filesToOrder { fileType := determineType(fileName) switch fileType { case IMAGE_TYPE: _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "images")) case AUDIO_TYPE: _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "audio")) case VIDEO_TYPE: _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "videos")) case DOCUMENT_TYPE: _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "documents")) default: fmt.Printf("Unsupported file type: %s\n", fileName) } }
각 파일을 반복하여 파일 형식을 파악한 다음 올바른 폴더로 보냅니다. 인식할 수 없는 파일 형식을 발견하면 알려드립니다. ?
어떤 종류의 파일을 다루고 있는지 파악하기 위해 다음 편리한 기능을 사용합니다.
func determineType(file string) int { for key, value := range ALLOWED_TYPES { for _, ext := range value { if strings.HasSuffix(file, ext) { return key } } } return UNDEFINED_TYPE }
목록과 파일 확장자를 비교하여 이미지, 오디오, 비디오 또는 문서인지 알려줍니다. ?️♂️
마지막으로 각 파일을 새 폴더로 이동합니다.
func moveToFolder(src, dest string) error { if _, err := os.Stat(dest); os.IsNotExist(err) { err := os.Mkdir(dest, 0777) if err != nil { return err } } fileName := filepath.Base(src) err := os.Rename(src, filepath.Join(dest, fileName)) if err != nil { return err } return nil }
대상 폴더가 있는지 확인하고 필요한 경우 생성합니다. 그런 다음 파일을 이전 위치에서 새 위치로 이동합니다. ?
어떤 카테고리에도 속하지 않는 파일의 경우 다음 사항을 알려드립니다.
default: fmt.Printf("Unsupported file type: %s\n", fileName)
지원되지 않는 파일 형식에 대해서는 메시지를 인쇄하므로 정리되지 않은 파일이 무엇인지 정확히 알 수 있습니다. ?
이제 1부가 끝났습니다! ? 우리는 Go에서 파일 작업의 기본 사항을 성공적으로 다루고 파일을 깔끔한 카테고리로 분류했습니다. 하지만 여기에 생각이 있습니다. "아카이브" 또는 "프로젝트"와 같은 새 카테고리를 추가하고 싶다면 어떻게 해야 할까요? 지금 당장은 지도를 살펴보고 코드를 수정해야 합니다. ?
이 접근 방식은 도구를 사용하는 유일한 사람인 경우 유용합니다. 하지만 Go를 모르는 친구들과 이 멋진 도구를 공유한다고 상상해보세요. ?️ 코드를 이해하지 않고도 누구나 쉽게 맞춤설정할 수 있도록 만들고 싶을 것입니다.
두려워하지 마세요! 다음 부분에서는 File Organizer 도구에 대해 더 자세히 알아보고 이러한 문제를 해결하는 고급 기능을 알아 보겠습니다. ? 우리는 누구나 Go 코드를 한 줄도 작성하지 않고도 도구를 수정하고 향상할 수 있도록 만들 것입니다. 흥미가 있으신가요? 계속 지켜봐 주시기 바랍니다!
질문이 있거나 자세한 내용이 필요하신가요? 아래에 입력하고 채팅해 보세요! ?
위 내용은 Golang을 사용한 나의 첫 프로젝트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!