[flutter] 플러터에서 path_provider를 이용하여 파일 이동하기

소개

파일 이동은 애플리케이션 개발에서 자주 사용되는 기능 중 하나입니다. 플러터에서는 path_provider 패키지를 사용하여 파일의 경로를 확인하고 이동할 수 있습니다. 이번 포스트에서는 path_provider를 이용하여 플러터 애플리케이션 내에서 파일을 이동하는 방법에 대해 알아보겠습니다.

path_provider 패키지 추가하기

먼저, path_provider 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 아래와 같이 의존성을 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  path_provider: ^2.0.3

의존성을 추가한 후에는 터미널에서 flutter pub get 명령어를 실행하여 패키지를 업데이트 해주세요.

파일 이동하기

파일을 이동하기 위해서는 원본 파일의 경로와 이동할 경로를 알아야 합니다. path_provider 패키지를 이용하면 다음과 같이 경로를 얻을 수 있습니다:

Directory appDir = await getApplicationDocumentsDirectory();
String sourcePath = join(appDir.path, 'source_file.txt');
String destinationPath = join(appDir.path, 'destination_file.txt');

위의 코드에서는 getApplicationDocumentsDirectory() 함수를 이용하여 애플리케이션의 문서 디렉토리 경로를 얻고, join() 함수를 이용하여 원본 파일과 이동할 파일의 경로를 결합합니다.

이제 원하는 경로로 파일을 이동해봅시다. File 클래스의 rename() 메서드를 이용하여 파일을 이동할 수 있습니다:

File sourceFile = File(sourcePath);
await sourceFile.rename(destinationPath);

위의 코드에서는 File 클래스를 이용하여 원본 파일을 가져온 후, rename() 메서드를 이용하여 파일을 이동합니다. 이때, await 키워드를 사용하여 비동기로 파일 이동이 완료될 때까지 기다립니다.

예외 처리하기

파일 이동 과정에서 예외가 발생할 수도 있습니다. 예를 들어, 원본 파일이 존재하지 않거나 이동할 경로에 이미 파일이 존재하는 경우 등입니다. 이러한 경우에는 rename() 메서드의 실행을 try-catch 문으로 감싸서 예외 처리를 해주어야 합니다:

try {
  File sourceFile = File(sourcePath);
  await sourceFile.rename(destinationPath);
} catch (e) {
  print('파일 이동 중 오류가 발생했습니다: $e');
}

위의 코드에서는 try 블록 안에서 파일 이동 코드를 실행하고, catch 블록에서 예외를 처리합니다. 이때, 예외 정보는 e 변수에 저장되어 출력됩니다.

마무리

이번 포스트에서는 path_provider 패키지를 이용하여 플러터 애플리케이션에서 파일을 이동하는 방법에 대해 알아보았습니다. 파일 이동은 사용자 경험을 개선하거나 데이터 관리를 위해 중요한 기능 중 하나이므로, 적절히 활용할 수 있도록 공부해보시기 바랍니다.

참고 자료