[flutter] 플러터에서 앱 캐시 디렉토리에 파일 읽기

안녕하세요! 이번 포스트에서는 플러터(Flutter)에서 앱 캐시 디렉토리에 파일을 읽는 방법에 대해 알아보겠습니다.

앱 캐시 디렉토리는 앱이 임시적으로 데이터를 저장하는 용도로 사용되는 디렉토리입니다. 이 디렉토리에 저장된 파일은 앱이 종료되면 삭제될 수도 있습니다. 따라서 앱 캐시 디렉토리에 존재하는 파일을 읽기 위해서는 접근 방법에 유의해야 합니다.

1. path_provider 패키지 설치

앱 캐시 디렉토리에 접근하기 위해서는 path_provider 패키지가 필요합니다. 이 패키지는 앱의 파일 시스템 경로를 제공해주는 역할을 합니다.

먼저 pubspec.yaml 파일에 다음과 같이 path_provider 패키지를 추가해주세요:

dependencies:
  path_provider: ^2.0.2

그리고 패키지를 설치하기 위해 터미널에서 다음 명령어를 실행해주세요:

flutter pub get

2. 파일 읽기

path_provider 패키지를 사용하여 앱 캐시 디렉토리의 경로를 가져온 후, 해당 경로에 있는 파일을 읽을 수 있습니다.

먼저 path_provider 패키지를 import 해주세요:

import 'package:path_provider/path_provider.dart';

다음으로 앱 캐시 디렉토리의 경로를 가져오는 함수를 작성해보겠습니다:

Future<String> getCacheDirectoryPath() async {
  final directory = await getTemporaryDirectory();
  return directory.path;
}

위 함수는 getTemporaryDirectory를 통해 앱 캐시 디렉토리의 Directory 객체를 가져온 후, 해당 디렉토리의 경로를 반환합니다.

이제 파일을 읽을 때 사용할 함수를 작성해보겠습니다:

Future<String> readFileFromCache(String filename) async {
  final cacheDirectoryPath = await getCacheDirectoryPath();
  final file = File('$cacheDirectoryPath/$filename');
  
  if (await file.exists()) {
    return await file.readAsString();
  } else {
    throw Exception('File not found in cache');
  }
}

위 함수는 getCacheDirectoryPath를 호출하여 앱 캐시 디렉토리의 경로를 가져온 후, 해당 경로에 있는 파일을 File 객체로 생성합니다. 파일이 존재한다면 readAsString 함수를 사용하여 파일의 내용을 읽어옵니다.

3. 사용 예시

이제 위에서 작성한 함수들을 사용하여 앱 캐시 디렉토리에 있는 파일을 읽어볼까요? 아래는 사용 예시입니다:

void main() async {
  try {
    final content = await readFileFromCache('sample.txt');
    print(content);
  } catch (e) {
    print(e);
  }
}

위 예시에서는 sample.txt 파일을 읽어와서 콘솔에 출력하고 있습니다. 이때, 파일이 존재하지 않는 경우 File not found in cache라는 메시지가 출력됩니다.

마무리

이번 포스트에서는 플러터에서 앱 캐시 디렉토리에 있는 파일을 읽는 방법에 대해 알아보았습니다. path_provider 패키지를 활용하여 앱 캐시 디렉토리의 경로를 가져오고, 해당 경로에서 파일을 읽는 방법을 배웠습니다.

더 많은 파일 작업을 수행하고 싶다면, path_provider 패키지 공식 문서를 참고하시기 바랍니다.