=================================
=================================
=================================
출처: http://androidhuman.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%9D%98-%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5%EC%97%90-%ED%95%84%EC%9A%94%ED%95%9C-%EA%B2%BD%EB%A1%9C%EB%A5%BC-%EC%96%BB%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%B4%9D%EC%A0%95%EB%A6%AC
애플리케이션을 제작하다 보면 파일을 입/출력 기능을 구현해야 하는 경우가 있습니다. 파일 입/출력을 수행하려면 파일의 경로를 꼭 알아야 하는데, 안드로이드에서 파일을 저장할 수 있는 경로는 다양합니다.
내부 저장소
API
File Context.getCacheDir()
내부 저장소의 캐시 디렉터리 경로를 반환합니다.
/data/data/[패키지 이름]/cache
/data/data/com.androidhuman.app/cache
API
File Context.getDatabasePath(String name)
데이터베이스 파일의 경로를 반환합니다. 인자로 데이터베이스 파일의 이름을 넘겨줍니다.
API
File Context.getFilesDir()
애플리케이션에서 사용하는 일반 파일들이 저장되는 경로를 반환합니다.
API
File Context.getFileStreamPath(String name)
일반 파일이 저장된 공간에서 특정 이름을 가지는 파일의 경로를 반환합니다. 인자로 확장자를 포함한 파일 이름을 넘겨줍니다.
외부 저장소-공용 영역
API
static File Environment.getExternalStorageDirectory()
외부 저장소의 최상위 경로를 반환합니다.
API
static File Environment.getExternalStoragePublicDirectory(String type)
데이터 유형에 따른 외부 저장소의 저장 공간 경로를 반환합니다. 인자로 디렉터리의 유형을 넘겨줍니다.
인자명 | 설명 | 경로 |
Environment.DIRECTORY_ALARMS | 알람으로 사용할 오디오 파일을 저장합니다. | /mnt/sdcard/Alarms |
Environment.DIRECTORY_DCIM | 카메라로 촬영한 사진이 저장됩니다. | /mnt/sdcard/DCIM |
Environment.DIRECTORY_DOWNLOADS | 다운로드한 파일이 저장됩니다. | /mnt/sdcard/Download |
Environment.DIRECTORY_MUSIC | 음악 파일이 저장됩니다. | /mnt/sdcard/Music |
Environment.DIRECTORY_MOVIES | 영상 파일이 저장됩니다. | /mnt/sdcard/Movies |
Environment.DIRECTORY_NOTIFICATIONS | 알림음으로 사용할 오디오 파일을 저장합니다. | /mnt/sdcard/Notifications |
Environment.DIRECTORY_PICTURES | 그림 파일이 저장됩니다. | /mnt/sdcard/Pictures |
Environment.DIRECTORY_PODCASTS | 팟캐스트(Poacast) 파일이 저장됩니다. | /mnt/sdcard/Podcasts |
외부 저장소-애플리케이션 고유 영역
API
File Context.getExternalFilesDir(String type)
애플리케이션 고유 영역의 데이터 유형에 따른 외부 저장소의 저장 공간 경로를 반환합니다. 인자로 디렉터리의 유형을 넘겨줍니다.
인자명 | 경로 |
Environment.DIRECTORY_ALARMS | /mnt/sdcard/Android/data/[패키지 이름]/files/Alarms |
Environment.DIRECTORY_DCIM | /mnt/sdcard/Android/data/[패키지 이름]/files/DCIM |
Environment.DIRECTORY_DOWNLOADS | /mnt/sdcard/Android/data/[패키지 이름]/files/Downloads |
Environment.DIRECTORY_MUSIC | /mnt/sdcard/Android/data/[패키지 이름]/files/Music |
Environment.DIRECTORY_MOVIES | /mnt/sdcard/Android/data/[패키지 이름]/files/Movies |
Environment.DIRECTORY_NOTIFICATIONS | /mnt/sdcard/Android/data/[패키지 이름]/files/Notifications |
Environment.DIRECTORY_PICTURES | /mnt/sdcard/Android/data/[패키지 이름]/files/Pictures |
Environment.DIRECTORY_PODCASTS | /mnt/sdcard/Android/data/[패키지 이름]/files/Podcasts |
null | /mnt/sdcard/Android/data/[패키지 이름]/files |
API
File Context.getExternalCacheDir()
외부 저장소의 캐시 디렉터리를 반환합니다.
/mnt/sdcard/Android/data/com.androidhuman.app/cache
=================================
=================================
=================================
출처: http://maluchi.cafe24.com/xe/index.php?mid=MyAndroidTips&sort_index=readed_count&order_type=asc&page=2&listStyle=webzine&document_srl=26721
1. 현재 설치된 패키지 경로 얻는 방법
1.
getApplicationContext().getFilesDir().getAbsolutePath().replace(
"files"
,
""
);
2.
//data/data/com.maluchi.ModuleDemo/files
3.
//data/data/com.maluchi.ModuleDemo/
2. assets 폴더의 특정 파일을 설치된 패키지의 특정경로로 복사하는 방법
01.
//Environment.getDataDirectory().getAbsolutePath()
02.
private
int
saveDefaultModule(String assetsfile)
03.
{
04.
AssetManager mgr = getResources().getAssets();
05.
if
(mgr !=
null
)
06.
{
07.
FileInputStream fis =
null
;
08.
BufferedInputStream bis =
null
;
09.
FileOutputStream fos =
null
;
10.
11.
try
{
12.
InputStream is = mgr.open(assetsfile);
13.
bis =
new
BufferedInputStream(is);
14.
//fis = new FileInputStream(bis);
15.
16.
Log.d(
"maluchi"
,
"package path: "
+getApplicationContext().getFilesDir().getAbsolutePath());
17.
18.
String path = getApplicationContext().getFilesDir().getAbsolutePath().replace(
"files"
,
"module"
);
19.
File f =
new
File(path);
20.
if
(!f.exists())
21.
f.mkdirs();
22.
23.
String outfile = path +
"/"
+assetsfile;
24.
Log.d(
"maluchi"
,
"path: "
+outfile);
25.
26.
f =
new
File(outfile);
27.
if
(!f.exists())
28.
{
29.
fos =
new
FileOutputStream(f);
30.
31.
int
readBytes =
0
;
32.
byte
[] buf =
new
byte
[
1024
];
33.
while
((readBytes = bis.read(buf,
0
,
1024
)) != -
1
) {
34.
fos.write(buf,
0
, readBytes);
35.
}
36.
}
37.
38.
if
(fos !=
null
)
39.
fos.close();
40.
if
(bis !=
null
)
41.
bis.close();
42.
mgr.close();
43.
}
catch
(IOException e) {
44.
// TODO: handle exception
45.
Log.e(
"maluchi"
, e.getMessage());
46.
47.
try
{
48.
if
(fos !=
null
)
49.
fos.close();
50.
if
(bis !=
null
)
51.
bis.close();
52.
mgr.close(); }
catch
(Exception e2) {
53.
// TODO: handle exception
54.
}
55.
}
=================================
=================================
=================================
=================================
=================================
=================================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 스크롤 있는 컨트롤들 자동으로 아래(밑)으로 스크롤 관련 (0) | 2011.06.28 |
---|---|
안드로이드 setVisibility - gone와 invisible 와 visible 차이 (0) | 2011.06.27 |
안드로이드 웹을 이용한 이미지 관련 (0) | 2011.06.24 |
안드로이드 제공 searchable 이용해서 검색창 넣기 (1) | 2011.06.20 |
안드로이드 ListView CHOICE_MODE_MULTIPLE 멀티초이스(리스트뷰 체크박스 같이 연동) 관련 (4) | 2011.06.17 |
댓글 영역