본문 바로가기

Android

Android sd카드 데이터 저장 및 읽기

# 네이버블로그에서 이사 (2012.07.13 게시물. http://blog.naver.com/rkdmfql1540)  


안드로이드 sd카드에 접근해 sd카드에 파일을 저장하거나 읽어오는 샘플 소스.


먼저 해당 앱에서 sd카드에 저장하거나 읽어 오기 위해서는 매니페스트에 다음에 해당하는 퍼미션을 추가해야 한다.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 


아래는 주석과 소스이다. save메소드는 sd카드에 저장 load 메소드는 데이터를 읽어오는 메소드이다.

    public static void save(String result) {
        String sdPath;  //SD 카드의 경로
        String externalState = Environment.getExternalStorageState();
        if (externalState.equals(Environment.MEDIA_MOUNTED)) {
            //외부 저장 장치가 마운트 되어서 읽어올 준비가 되었을 때
            sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        } else {
            //마운트 되지 않았을 때 
            sdPath = Environment.MEDIA_UNMOUNTED;
        }
        File file = new File(sdPath + "/myDir");
        if (!file.isDirectory())
            file.mkdir(); //디렉토리 만들기
        File file1 = new File(sdPath + "/mydir/text.txt");
        try {
            FileOutputStream fos = new FileOutputStream(file1);
            fos.write(result.getBytes());
            fos.close();

        } catch (Exception e) {
            Log.i("파일 저장 실패:", e.getMessage());
        }
    }

    //데이터 로드 메소드
    public static String load() {
        String sdPath;  //SD 카드의 경로
        String externalState = Environment.getExternalStorageState();
        if (externalState.equals(Environment.MEDIA_MOUNTED)) {
        //외부 저장 장치가 마운트 되어서 읽어올 준비가 되었을 때
            sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        } else {
        //마운트 되지 않았을 때 
            sdPath = Environment.MEDIA_UNMOUNTED;
        }
        String result = "";
        try {
            String dir = sdPath + "/myDir/text.txt";
        //파일에서 읽어오기 위한 스트림 객체
            File file = new File(dir);
            FileInputStream fis = new FileInputStream(file);
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            result = new String(buffer);
        } catch (Exception e) {
            Log.i("불러오기 실패", e.getMessage());
        }
        return result;
    }