[flutter] 플러터에서 path_provider를 이용하여 디렉토리 복사하기
플러터는 경로를 관리하는 데에 유용한 path_provider
패키지를 제공합니다. 이 패키지를 사용하여 원하는 디렉토리를 다른 디렉토리로 복사하는 방법을 알아보겠습니다.
path_provider
패키지 설치하기
먼저, path_provider
패키지를 사용하기 위해서는 pubspec.yaml
파일에 다음과 같이 패키지를 추가해야 합니다:
dependencies:
path_provider: ^2.0.4
설치를 완료하기 위해 터미널에서 다음 명령을 실행합니다:
flutter pub get
디렉토리 복사하기
path_provider
패키지를 통해 디렉토리를 복사하기 위해서는 먼저 원본 디렉토리와 대상 디렉토리의 경로를 얻어와야 합니다. copyDirectory
함수를 만들어서 이 작업을 수행해 보겠습니다.
import 'dart:io';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart';
Future<void> copyDirectory(String sourceDir, String targetDir) async {
final sourceDirectory = Directory(sourceDir);
final targetDirectory = Directory(targetDir);
if (await targetDirectory.exists()) {
throw Exception('Target directory already exists');
}
await targetDirectory.create(recursive: true);
await for (var entity in sourceDirectory.list(recursive: true)) {
if (entity is File) {
final newPath = path.join(targetDirectory.path, path.basename(entity.path));
await entity.copy(newPath);
} else if (entity is Directory) {
final newPath = path.join(targetDirectory.path, path.basename(entity.path));
await Directory(newPath).create();
}
}
}
copyDirectory
함수는 주어진 원본 디렉토리와 대상 디렉토리를 받아와서, 대상 디렉토리가 존재하면 예외를 throw하고, 대상 디렉토리를 생성합니다. 그 후 루프를 통해 원본 디렉토리의 모든 파일과 디렉토리를 대상 디렉토리로 복사합니다.
이제 copyDirectory
함수를 사용하여 디렉토리를 복사할 수 있습니다.
final sourceDir = '/path/to/source/directory';
final targetDir = '/path/to/target/directory';
copyDirectory(sourceDir, targetDir)
.then((_) => print('Directory copied successfully.'))
.catchError((e) => print('Error: $e'));
위의 코드에서 sourceDir
와 targetDir
를 각각 원본 디렉토리와 대상 디렉토리의 경로로 바꿔주어야 합니다. copyDirectory
함수를 호출하게 되면 디렉토리가 복사되고, 성공적으로 복사되었다는 메시지가 출력됩니다. 만약 에러가 발생하면 에러 메시지가 출력됩니다.
이제 path_provider
패키지를 사용하여 디렉토리를 복사하는 방법을 알게 되었습니다. 이를 통해 플러터 앱에서 유용한 기능을 구현할 수 있습니다.