2010년 12월 20일 월요일

sdcard 파일 입출력

참조(공식 안드로이드 개발 사이트): http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

1. sdcard 에 접근하기 위해 manifest 파일에 permission 을 추가해 준다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. sdcard 가 마운트 되었는지 또는 쓰기 가능한지 등의 상태를 확인한다.
String state = Environment.getExternalStorageState()
 - state 가 Environment.MEDIA_MOUNTED 이면 마운트되어 있고 쓰기 가능하다.
 - state 가 MEDIA_MOUNTED_READ_ONLY 이면 마운트되어 있고 읽기만 가능하다.
 - 그외 는 sdcard 에 접근 할 수 없는 경우다.

3. sdcard 의 File 객체를 받는다.
API level 7 까지는 Environment.getExternalStorageDirectory() 를 사용한다.
API level 8 부터는 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 를 사용할 수 있다.
예) File path = Environment.getExternalStorageDirectory();

4. File 객체를 만든다.
위에서 받은 File 객체를 path 로 넣어준다.
예) File file = new File(path, "filename");

5. 파일을 조작한다.
 - 바이너리 파일 입출력은 FileInputStream/FileOutputStream 클래스를 이용한다.
 - 텍스트 파일 입출력은 BufferedReader/BufferedWriter 클래스를 이용한다.

#) getExternalStorageDirectory 함수를 사용하지 않고 "/sdcard/filename" 등의 경로를 File 생성자에 직접 넣어주면 IllegalArgumentException (예 'File /sdcard/filename contains a path separator') 이 발생한다.

댓글 없음:

댓글 쓰기