Android - 파일 입출력, 파일 공유, SD 카드
파일
1) 파일 입출력
-> 파일 입출력은 예외발생 확률이 높기 때문에 반드시 try - catch 문.
-> 스트림류는 가비지 컬렉터에 의한 정리대상이 아니기 때문에 꼭 close
FileOutputStream openFileOutput (String name, int mode)
FileInputStream openFileInput (String name)
mode = MODE_PRIVATE : 혼자만 사용하는 모드
= MODE_APPEND : 파일이 존재할 경우 기존내용에 추가하는 모드
= MODE_WORLD_READABLE : 다른 응용 프로그램과 파일 읽을 수 있음
= MODE_WORLD_WRITABLE : 다른 응용 프로그램이 파일 기록할 수 있음
boolean deleteFile (String name)
String[] fileList()
InputStream openRawResource (int id)
-> 위치는 res/raw
example
FileOutputStream fos = openFileOutput("test.txt", Context.MODE_WORLD_READABLE);
String str = "Android File IO Test";
fos.write(str.getBytes());
fos.close();
FileInputStream fis = openFileInput("test.txt");
byte[] data = new byte[fis.available()];
while (fis.read(data) != -1){;}
fis.close();
InputStream fres = getResources().openRawResource(R.raw.restext);
byte[] data = new byte[fres.available()];
while(fres.read(data) != -1) { ; }
fres.close()
deleteFile("test.txt");
2) 파일 공유
: 파일은 기본적으로 생성한 프로그램만 액세스 할 수 있다.
다른 응용 프로그램과 파일을 공유하려면 여러 가지 조건을 만족해야 한다.
1. 퍼미션에서 (예: -rw-rw-r--) 가장 마지막, 외부에 대한 권한 설정이 되어 있어야 한다.
2. 해당 파일을 생성한 프로그램의 컨텍스트를 구해야 한다.
-> 여기서 flag는 CONTEXT_IGNORE_SECURITY 로 열어야 한다. (아니면 보안상 이유 예외)
example
Context Other = createPackageContext("com.android",
Context.CONTEXT_IGNORE_SECURITY);
FileInputStream fis = Other.openFileInput("test.txt");
byte[] data = new byte[fis.available()];
while (fis.read(data) != -1) { ; }
fis.close();
3) SD Card
가상 SD 카드 만들기
mksdcard [-l 레이블] 용량 파일명
-> 용량은 8M 이상
-> 파일명은 ISO 파일과 비슷하다고 생각하면 된다.
3-1) SD 카드 접속
SD 카드의 파일을 엑세스 하려면 허락! 을 받아야 한다.
static String getExternalStorageState()
: SD 카드의 현재 상태 조사 MEDIA_MOUNTED / MEDIA_UNMOUNTED
static File getExternalStorageDirectory()
: SD 카드가 마운트된 경로. 보통 /sdcard
static File getRootDirectory()
static File getDataDirectory()
static File getDownloadCacheDirectory()
example
String ext = Environment.getExternalStorageState(); String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath(); String rootdir = Environment.getRootDirectory().getAbsolutePath(); String datadir = Environment.getDataDirectory().getAbsolutePath(); String cachedir = Environment.getDownloadCacheDirectory().getAbsolutePath(); File dir = new File(sdpath + "/dir"); dir.mkdir(); //Save File file = new File(sdpath + "/dir/file.txt"); try{ FileOutputStream fos = new FileOutputStream(file); String str = "This file exists in SDcard"; fos.write(str.getBytes()); fos.close(); } catch(Exception e){;} //Load try{ FileInputStream fis = new FileInputStream(sdpath + "/dir/file.txt"); byte[] data = new byte[fis.available()]; while(fis.read(data) != -1) {;} fis.close(); } catch (Exception e) {;}
'scrap > Android' 카테고리의 다른 글
android 가로모드 막기 & 세로모드 막기 (0) | 2011.02.03 |
---|---|
android EditText tip (0) | 2011.02.03 |
[Android] 간단한 데이터의 저장/로드. SharedPreferences (0) | 2011.02.03 |
Android - SD 카드에 파일 읽고 쓰기, SQLite3 조작하기 (0) | 2011.02.03 |
android txt 불러쓰기 (0) | 2011.02.03 |