- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[안드로이드] SD카드에 저장, 불러오기 기능 수행 본문
#. 현재 디바이스의 상태를 받아와서 Mount되었는지 아닌지를 판단한다.
//시스템의 현재 상태를 받아와서 ext에 저장한다. |
#. sdcard내 특정 폴더가 쓰기 가능한지 체크하기
private static boolean checkFsWritable() { String directoryName = Environment.getExternalStorageDirectory().toString() + "/DCIM"; File directory = new File(directoryName); if(!directory.isDirectory()) { if(!directory.mkdirs()){ return false; } } File f = new File(directoryName, ".probe"); try { if(f.exists()){ f.delete(); } if(!f.createNewFile()){ return false; } f.delete(); return true; } catch (IOException e) { return false; // TODO: handle exception } } |
(안드로이드 개발, 사용자 모임 카페에서 에디터님의 글을 copy했습니다)
#. SD카드에는 많은 디렉토리가 있으므로 디렉토리의 절대값을 받아오는 방법을 알아봅시다.
String rootdir = Environment.getRootDirectory().getAbsolutePath(); |
Environment클래스에 있는 get메소드를 이용해서 루트데이터와 데이터 캐쉬데이터의 주소값을 받아올 수 있고 그것의 절대값을 요구하여 String으로 저장하였다.
#. 디렉토리를 만들어서 저장하는 과정.
case R.id.save: |
세이브 버튼을 눌렀을 경우에 일어나는 동작입니다.
우선 File로 mSDpath<<<절대값 주소에 /dir 디렉토리라는 객체 dir를 만듭니다.
그 후에 dir/file.txt라는 파일을 만들고 그 객체 file을 선언합니다.
그 다음에 파일에 출력할 객체를 FileOutputStream이라는 클래스의fos라는 객체를 선언한 뒤에 파일에 텍스트를 쓸 준비를 합니다. file의 객체(파일)에 fos 을 스트림 객체로 받은 후에 write로 str을 byte단위로 넣습니다.
이것까지 하면 파일을 만들어서 그 안에 "ASDQWODKQWDPOKQWDPOKQwd" 문자열이 들어가게 된다.
#. sdcard내 파일 저장
File root = Environment.getDownloadCacheDirectory(); if(root.canWrite()){ File gpxfile = new File(root, "gpxfile.gpx"); FileWriter gpxwriter = new FileWriter(gpxfile); BufferedWriter out = new BufferedWriter(gpxwriter); out.write("hello world"); out.close(); |
(안드로이드 개발, 사용자 모임 카페에서 에디터님의 글을 copy했습니다)
예외 처리가 되지 않았습니다. try-catch로 저 구문을 묶어줘야 합니다.
그 다음에 연 파일을 close해주고 몇가지 예외처리를 하면 끝납니다.
#. 예제 소스 전체
: 이 소스에는 파일을 만들어서 저장하는 과정만 나와있습니다. 로드하는 것과 지우는 것 역시 쉬우니 한번 해보시기 바랍니다^^
package com.android.dev; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.EditText; public class Z2SDcardActivity extends Activity { /** Called when the activity is first created. */ EditText mEdit; String mSDpath; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mEdit = (EditText) findViewById(R.id.edt); //시스템의 현재 상태를 받아와서 ext에 저장한다. String ext = Environment.getExternalStorageState(); if (ext.equals(Environment.MEDIA_MOUNTED)) { mSDpath = Environment.getExternalStorageDirectory() .getAbsolutePath(); } else { mSDpath = Environment.MEDIA_UNMOUNTED; } } public void mOnClick(View v) { // Toast.makeText(this, mSDpath, Toast.LENGTH_LONG).show(); switch (v.getId()) { case R.id.test: String rootdir = Environment.getRootDirectory().getAbsolutePath(); String datadir = Environment.getDataDirectory().getAbsolutePath(); String cachedir = Environment.getDownloadCacheDirectory() .getAbsolutePath(); mEdit.setText(String.format( "ext = %s root = %s data = %s cache=%s", mSDpath, rootdir, datadir, cachedir)); break; case R.id.save: File dir = new File(mSDpath + "/dir"); dir.mkdir(); File file = new File(mSDpath + "/dir/file.txt"); FileOutputStream fos = null; try { fos = new FileOutputStream(file); String str = "ASDQWODKQWDPOKQWDPOKQwd"; fos.write(str.getBytes()); mEdit.setText("write success"); }catch(FileNotFoundException e){ mEdit.setText("File not Found"+e.getMessage()); }catch(SecurityException e){ mEdit.setText("SecurityException"+e.getMessage()); }catch(Exception e){ mEdit.setText("기타 에러"+e.getMessage()); } finally{ if(fos!=null) try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } break; case R.id.load: break; } } } |
[출처] http://blog.naver.com/ijoos?Redirect=Log&logNo=60133247191
'★─Programing > ☆─Android' 카테고리의 다른 글
[안드로이드] [번역] 안드로이드 멋진 아이디어 - 안드로이드 오픈 악세서리 (0) | 2013.03.04 |
---|---|
[안드로이드] Intent 활용 예시 (0) | 2012.06.28 |
[안드로이드] LayoutInflater 에 대하여 (0) | 2012.03.19 |
[안드로이드] 인트로 나오고 자동으로 화면 전환 하는게 가능한가요? (0) | 2012.03.16 |
[안드로이드] 액티비티 이동간 애니메이션 샘플 코드 (0) | 2012.03.16 |