어플리케이션을 개발하다 보면 파일을 외장메모리 등에 저장해야 할 필요가 있다.

 

특정 경로를 지정해줬는데, 만약 해당 경로가 존재하지 않으면

 

error: No such file or directory

와 같은 에러를 뱉어내곤 한다.

 

해결하기 위해서는 다음과 같은 방법을 사용한다.

 

 

파일을 생성하기 전에 원하는 경로가 존재하는지 확인하고 만약 경로가 존재하지 않으면 생성한 후

 

파일을 생성할 경로를 반환해주는 메소드이다. 외장메모리의 유무도 확인한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 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를 반환한다.

Posted by Kugi
,