본문 바로가기
카테고리 없음

(예제) C언어로 맥북 사용자를 위한 특정 확장자를 가진 파일들을 특정 폴더로 이동시키는 파일 관리 시스템

by heydayz 2024. 8. 19.

C언어로 맥북 사용자를 위한 특정 확장자를 가진 파일들을 특정 폴더로 이동시키는 파일 관리 시스템 시뮬레이션

맥북 사용자에게 유용한 C 언어 예제로, 특정 확장자를 가진 파일들을 특정 폴더로 이동시키는 파일 관리 시스템을 만들어 봅시다. 맥북에서 다운로드 받은 파일들을 자동으로 정리하거나, 특정 프로젝트 관련 파일들을 한 곳에 모으는 등 다양한 용도로 활용할 수 있습니다. 맥북 환경에 최적화된 파일 시스템 호출 함수를 사용하여 안정적인 파일 이동 기능을 제공합니다.C 언어를 이용하면 파일 시스템에 대한 저수준 접근이 가능하여 복잡한 파일 처리 작업이 수행가능합니다.

필요한 라이브러리
<stdio.h>: 표준 입출력 라이브러리
<string.h>: 문자열 처리 라이브러리
<dirent.h>: 디렉토리 관련 기능을 제공하는 라이브러리
<sys/stat.h>: 파일 시스템 관련 정보를 제공하는 라이브러리

코드 구현 및 설명

#include <stdio.h>  
#include <string.h>  
#include <dirent.h>  
#include <sys/stat.h>

void moveFiles(const char \*srcDir, const char \*destDir, const char \*ext) {  
DIR \*dir = opendir(srcDir);  
struct dirent \*entry;  
struct stat statbuf;

```
if (dir == NULL) {
    printf("디렉토리 열기 실패\n");
    return;
}

while ((entry = readdir(dir)) != NULL) {
    char srcPath[256];
    char destPath[256];
    snprintf(srcPath, sizeof(srcPath), "%s/%s", srcDir, entry->d_name);

    // 디렉토리인 경우 건너뛰기
    if (stat(srcPath, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) {
        continue;
    }

    // 확장자가 일치하는 경우 이동
    if (strstr(entry->d_name, ext) != NULL) {
        snprintf(destPath, sizeof(destPath), "%s/%s", destDir, entry->d_name);
        if (rename(srcPath, destPath) == -1) {
            printf("파일 이동 실패: %s\n", srcPath);
        }
    }
}

closedir(dir);
```

}

int main() {  
char srcDir\[256\], destDir\[256\], ext\[20\];

```
printf("파일을 이동할 소스 디렉토리를 입력하세요: ");
scanf("%s", srcDir);
printf("파일을 이동할 대상 디렉토리를 입력하세요: ");
scanf("%s", destDir);
printf("이동할 파일의 확장자를 입력하세요: ");
scanf("%s", ext);

moveFiles(srcDir, destDir, ext);

return 0;
```

}

헤더 포함하는 것은 필요한 라이브러리를 포함합니다.
moveFiles 함수는 moveFiles 함수를 호출하여 파일을 이동합니다.
srcDir는 파일을 가져올 소스 디렉토리
destDir는 파일을 이동할 대상 디렉토리
ext는 이동할 파일의 확장자의 디렉토리를 열고, 각 파일을 순회하며 확장자가 일치하는 파일을 대상 디렉토리로 이동합니다.
main 함수는 사용자로부터 소스 디렉토리, 대상 디렉토리, 확장자를 입력받습니다.

 

사용 예시


다운로드 파일 정리: 다운로드 폴더를 소스 디렉토리로, 이미지 파일을 저장할 폴더를 대상 디렉토리로 설정하고, 확장자를 ".jpg" 또는 ".png"로 입력하면 해당 이미지 파일들이 이동됩니다.
프로젝트 파일 관리: 프로젝트 파일들이 있는 소스 디렉토리를 설정하고, 특정 프로젝트와 관련된 파일들의 확장자를 입력하여 해당 파일들을 별도의 폴더로 이동시킬 수 있습니다.
추가 기능 및 개선
다중 확장자 지원: 콤마(,)로 구분된 여러 확장자를 입력받아 처리할 수 있도록 수정할 수 있습니다.
파일 생성 날짜 기준 이동: 파일 생성 날짜를 기준으로 파일을 이동할 수 있도록 기능을 추가할 수 있습니다.
에러 처리: 파일 이동 중 발생할 수 있는 다양한 에러 상황을 처리하여 프로그램의 안정성을 높일 수 있습니다.
GUI: 그래픽 유저 인터페이스를 구현하여 사용자 편의성을 높일 수 있습니다.
주의:
권한: 프로그램 실행 시 해당 디렉토리에 대한 쓰기 권한이 필요합니다.
오류 처리: 파일 이동 중 오류가 발생할 수 있으므로 적절한 에러 처리를 해야 합니다.
백업: 중요한 파일을 이동하기 전에 반드시 백업을 해두는 것이 좋습니다.
이 예제는 맥북 사용자를 위한 간단한 파일 관리 시스템을 구현하는 방법을 보여줍니다. 더욱 복잡하고 다양한 기능을 추가하여 자신만의 맞춤형 파일 관리 도구를 만들 수 있습니다.