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

 

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

 

 

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

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

 

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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED