어플리케이션을 개발하다 보면 파일을 외장메모리 등에 저장해야 할 필요가 있다.
특정 경로를 지정해줬는데, 만약 해당 경로가 존재하지 않으면
error: No such file or directory
와 같은 에러를 뱉어내곤 한다.
해결하기 위해서는 다음과 같은 방법을 사용한다.
파일을 생성하기 전에 원하는 경로가 존재하는지 확인하고 만약 경로가 존재하지 않으면 생성한 후
파일을 생성할 경로를 반환해주는 메소드이다. 외장메모리의 유무도 확인한다.
// Example public static synchronized String GetFilePath(int fileType, int fileId) { String sdcard = Environment.getExternalStorageState(); File file = null; if ( !sdcard.equals(Environment.MEDIA_MOUNTED)) { // SD카드가 마운트되어있지 않음 file = Environment.getRootDirectory(); } else { // SD카드가 마운트되어있음 file = Environment.getExternalStorageDirectory(); } String dir = file.getAbsolutePath() + String.format("/mytestdata/file_%02d", fileType); String path = file.getAbsolutePath() + String.format("/mytestdata/file_%02d/myfile%04d.mp4", fileType, fileId); file = new File(dir); if ( !file.exists() ) { // 디렉토리가 존재하지 않으면 디렉토리 생성 file.mkdirs(); } // 파일 경로 반환 return path; }
* 참고로 File 클래스의 멤버메소드에는 mkdirs()와 mkdir()이 있는데
이름 그대로 mkdirs()는 목적지 경로까지 상위폴더를 포함하여 전체 경로를 생성하고, mkdir()은 지정한 폴더 하나만을 생성한다.
둘 다 반환타입은 boolean으로, 경로 생성에 성공하면 true, 이미 존재하는 경로이거나 실패하면 false를 반환한다.
'Development > Android' 카테고리의 다른 글
안드로이드 녹음 및 재생하기 (0) | 2013.04.22 |
---|---|
SharedPreferences.Editor apply()와 commit()의 차이 (3) | 2013.04.08 |
Android 현재 시간 얻기 (0) | 2013.03.31 |
[Accessibility] Missing contentDescription attribute on image (2) | 2013.02.24 |