- 전체
- android studio
- Android SDK
- Android NDK
- Android ADK
- Android Etc. Lib.
- Android dalvik VM
- Android 보안
- PhoneGap
- AOSP 개발
- MIT App Inventor 2
- kivy (python)
- ionic framework
- Kotlin (코틀린)
- React Native
Android SDK [안드로이드] 앱이 파일을 읽고 쓰는 위치
2016.03.24 12:19
[안드로이드] 앱이 파일을 읽고 쓰는 위치
안드로이드에서 파일들을 읽고 쓰는 방법을 배우기 전에 이들의 위치에 대해 정리해 보려고 합니다. 파일의 위치에 따라 사용해야 하는 클래스와 메소드들이 달라지기 때문입니다.
파일을 읽고 쓰는 위치들의 종류
안드로이드에서 파일들이 저장되는 저장 장치는 크게 두 가지로 구별 됩니다.
- 내부 메모리 (internal memory): 기기 내 보드에 장착된 플래시 메모리
- 외부 메모리 (external memory): 기기의 슬롯에 삽입 또는 제거될 수 있는 기기 외부 저장 장치
내부 메모리 (Internal Memory)
접근하고자 하는 파일의 위치가 내부 메모리의 어디인가에 따라 호출해야 할 메소드가 달라집니다. 크게 세 가지 경우를 들 수 있습니다.
- 어플리케이션 고유의 경로
- 어플리케이션 파일(APK) 내에 있는 리소스 파일
- 내부 메모리 안 임의의 위치
어플리케이션 고유의 경로
안드로이드 어플리케이션은 자신의 고유한 경로에 파일을 읽거나 기록할 수 있습니다. 경로는 다음과 같습니다.
/data/data/앱의 패키지 이름/files
예를 들어 보죠. 어플리케이션의 패키지가 me.blog.netrance.file_test_app이면, 그것의 고유 경로는 /data/data/me.blog.netrance.file_test_app/files입니다.
자바의 파일 입출력 객체로 파일에 접근하는 코드를 작성할 때, 파일의 이름만 작성하세요. 그러면 그 파일의 경로는 앱의 고유 경로로 간주 됩니다. 아래 코드는 test.txt라는 파일을 읽기 전용으로 열기를 수행합니다.
|
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("test.txt", MODE_PRIVATE); |
주의해야 할 점은 그 패키지 이름을 갖는 앱만 위 경로에 접근할 수 있다는 점입니다. 다른 앱이나 DDMS로는 그것에 직접 접근할 수 없습니다. 단, AVD와 루팅 된 기기의 경우에는 예외입니다.
어플리케이션 파일(APK) 내에 있는 리소스 파일
프로그래머가 정의하는 리소스 파일들은 빌드 후 APK 파일 내에 통합 저장 됩니다. 안드로이드는 앱의 res/raw 폴더에 속하는 리소스 파일에 접근할 수 있는 메소드를 제공합니다. 그것은 바로 Resources 클래스의 openRawResource()입니다.
참고로 APK 파일은 압축 파일이므로 ZIP 프로그램으로 그것을 풀 수 있습니다. 그러면 res 폴더를 찾아 보실 수 있습니다. 그 안에 raw 폴더가 있습니다. 단, 빌드하기 전에 프로젝트의 res 폴더가 raw를 포함한 경우에 한합니다.
내부 메모리 안 임의의 위치
안드로이드 어플리케이션은 내부 메모리 안에서 OS가 허용한 영역에 속한 파일들에 접근할 수 있습니다.
외부 메모리 (External Memory)
SD 카드와 같은 외부 메모리에 저장된 파일 또한 안드로이드가 읽고 쓸 수 있습니다. 파일에 접근하는 메소드를 호출하실 때, 파일의 경로의 맨 앞에 "sdcard/"를 작성하세요. 이것은 외장 메모리의 루트에 해당됩니다. 또는 Environment.getExternalStorageMemory() 메소드를 호출해서도 외장 메모리의 경로를 구할 수 있습니다.
마치며...
지금까지 안드로이드에서 파일을 읽고 쓰는 위치에 대해 알아보았습니다. 이후에는 파일을 읽고 쓰는 방법에 대해 정리할 예정입니다.
[출처] [안드로이드] 앱이 파일을 읽고 쓰는 위치|작성자 도모네
[출처] http://blog.naver.com/PostView.nhn?blogId=netrance&logNo=110140214261
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 2 |
코틀린 Kotlin (코틀린) 레퍼런스 문서 한글판
| 졸리운_곰 | 2016.12.04 | 1683 |
| 1 | 안드로이드를 위한 Swift - Kotlin을 아시나요? | 졸리운_곰 | 2016.12.04 | 624 |

