안드로이드 File 다루기
프로그래밍/Android 2013. 8. 28. 22:41안드로이드 File 다루기
File 다루기
- 안드로이드는에는 내부, 외부의 두가지의 파일 저장 영역이 있다. (internal, external storage)
internal storage (내부)
- 항상 사용가능하며 내부에 저장된 파일은 기본적으로 해당 앱만 접근 가능하다.
- 시스템은 앱이 제거될때 내부에 저장된 파일을 모두 제거한다.
external storage (외부)
- 이곳에 저장된 파일은 다른 곳에서 읽혀질 수 있다. 따라서 다른 앱과 공유될 수 있거나 컴퓨터로 따로 관리할 파일들을 저장하는데 사용하는 것이 좋다.
참고
앱은 기본적으로 internal storage 에 저장되지만 manifest 파일내의 android:installLocation 속성으로 external storage 에 저장할 수 있다.
예) apk 파일의 사이즈가 매우 큰경우
external storage 권한 얻기
쓰기 권한
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
읽기 권한
차후에는 external storage 에 대한 읽기 권한은 기본으로 제공될 예정
<manifest ...>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
</manifest>
internal storage 에 파일 저장하기
getFileDir()
- 앱 관련된 파일을 저장할 내부 디렉토리의 File 객체를 리턴한다.
getCacheDir()
- 앱의 임시 캐쉬 파일을 저장할 수 있는 디렉토리의 File 객체를 리턴한다.
파일 저장하기
File file = new File(context.getFilesDir(), filename);
String filename = "myfile";
String string = "Hello world";
FileOutputStream outputStream;
try{
outputStream = openFileOutput( filename, Context.MODE_PRIVATE);
outputStream.write( string.getBytes());
outputStream.close();
}catch( Exception e){
e.printStackTrace();
}
임시파일 생성
public File getTempFile( Context context, String url){
File file;
try{
String fileName = Uri.parse(url).getLastPathSegment();
file = File.createTempFile( fileName, null, context.getCacheDir());
}catch( IOException e){
}
return file;
}
external stroage 에 파일 저장하기
외부 저장소가 연결되어 있으며 사용가능한지 여부 체크
public boolean isExternalStorageWritable(){
String state = Environment,getExternalStorageState();
if( Environment.MEDIA_MOUNTED.equals( state)){
return true;
}
return false;
}
public boolean isExternalStorageReadable(){
String state = Environment.getExternalStorageState();
if( Environment.MEDIA_MOUNTED.equals( state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals( state)){
return true;
}
return false;
}
external storage 공용 public 저장소 사용하기
public 저장소는 앱을 삭제해도 저장되어 있는 파일이 사용가능하다.
public File getAlbumStorageDir( String albumName){
File file = new File( Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES),
albumName
);
if( !file.mkdir()){
Log.e( LOG_TAG, "Directory not created");
}
return file;
}
external storage 개인 private 저장소 사용하기
앱이 제거되면 private 저장소내의 모든 파일을 삭제한다.
public File getAlbumStorageDir( String albumName){
File file = new File( Environment.getExternalFilesDir( Environment.DIRECTORY_PICTURES),
albumName
);
// root 디렉토리 얻기
// file = new File( Environment.getExternalFilesDir( null));
if( !file.mkdir()){
Log.e( LOG_TAG, "Directory not created");
}
return file;
}
저장공간 확인
getFreeSpace(), getTotalSpace() 로 확인할 수 있다.
파일 삭제하기
myFile.delete();
myContext.deleteFile( fileName);
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 Activity 실행 결과 받기 (1) | 2013.08.29 |
---|---|
안드로이드 다른 앱과 상호작용하기 (0) | 2013.08.28 |
안드로이드 Fragment 활용하기 (0) | 2013.08.28 |
안드로이드 테마 설정하기 (0) | 2013.08.27 |
안드로이드 key-value 데이터 다루기 Preferences (0) | 2013.08.27 |