[안드로이드] 앱이 파일을 읽고 쓰는 위치

 

안드로이드에서 파일들을 읽고 쓰는 방법을 배우기 전에 이들의 위치에 대해 정리해 보려고 합니다. 파일의 위치에 따라 사용해야 하는 클래스와 메소드들이 달라지기 때문입니다.

 

 

파일을 읽고 쓰는 위치들의 종류

안드로이드에서 파일들이 저장되는 저장 장치는 크게 두 가지로 구별 됩니다. 

 

  • 내부 메모리 (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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

    = 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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
53 레이아웃이란 무엇일까요? 졸리운_곰 2016.04.30 237
52 안드로이드 네트워크/쓰레드 프로그래밍 예제 - HTTP file 졸리운_곰 2016.04.30 318
51 안드로이드 와이파이 연결시 준비된 코드 실행2 졸리운_곰 2016.04.30 171
50 안드로이드 와이파이 연결시 준비된 코드 실행 졸리운_곰 2016.04.30 423
49 Worked solution for Kivy + Admob on android 졸리운_곰 2016.04.30 580
48 Broadcast Receiver로 문자(SMS) 수신해보자 file 졸리운_곰 2016.04.29 761
47 How do you get the Android's primary e-mail address (or a list of e-mail addresses)? 졸리운_곰 2016.04.29 221
46 지니모션 설치 방법 총정리 (한글키보드 + 구글플레이 설치) file 졸리운_곰 2016.04.23 1065
45 넥서스5 USB to PC 연결 뒤 아무것도 안 보인다면 file 졸리운_곰 2016.04.18 732
44 워드프레스와 모바일웹, 앱 file 졸리운_곰 2016.04.17 191
43 워드프레스 기반 안드로이드 앱 만들기 file 졸리운_곰 2016.04.17 522
42 안드로이드/Android 액티비티(Activity) 투명 처리 하기 file 졸리운_곰 2016.04.14 196
41 Audio Capture 졸리운_곰 2016.04.08 212
» [안드로이드] 앱이 파일을 읽고 쓰는 위치 졸리운_곰 2016.03.24 879
39 안드로이드 네트워크 연결 상태 확인 졸리운_곰 2016.03.23 437
38 안드로이드 > 네트워크 연결 상태를 확인하는 ConnectivityManager 졸리운_곰 2016.03.23 652
37 [펌][안드로이드예제] 카메라로 찍은 사진(이미지파일)을 웹서버에 전송하는 프로그램예제 졸리운_곰 2016.03.12 2730
36 안드로이드 통화 녹음 소스 : android call recoder source file 졸리운_곰 2016.03.12 2118
35 안드로이드 앱 : 앱 개발시 코드에서 다른 앱 설치 및 제거 졸리운_곰 2016.03.09 295
34 [Android] 첨부파일 포함한 이메일 보내기 file 졸리운_곰 2016.03.05 911
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED