본문 바로가기

컴퓨터/안드로이드

[안드로이드] 외부저장소 파일 처리, 경로, 쓰기, 읽기

반응형

 

 

 

안녕하세요.

 

오늘은 안드로이드 파일처리에 대해서 알아보겠습니다.

 

1. 먼저 내장 메모리 파일처리 - 앱을 종료하고 다시 실행할 때 실행되던 곳에서 부터 작업하고 싶을 때 사용

 

내장 메모리 저장 위치 : /data/data/패키지명/files 폴더

 

과정 : openFileOutput(), openFileInput()으로 파일 열기 -> read(), write()로 파일 읽기/쓰기 -> close로 파일 닫기

 

 

 

2. 외부저장소에서 파일 처리

 

안드로이드는 SD카드에 저장된 데이터에 특별한 인증 절차 없이 접근 가능.

 

AVD 이름을 선택하고 EDIT을 클릭하면 사용하는 SD카드를  확인 가능.

 

 

과정 : AndroidManifest.xml 파일에 SD카드 사용 퍼미션 및 application 관련 속성 추가 ->

 

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

    <application
        android:requestLegacyExternalStorage="true"

 

 

MainActivity.java 코드 추가 (사용자에게 권한 요구)
(onCreate 함수 안에 작성) ->

 

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MODE_PRIVATE);

 

 

 

MainActivity.java 코드추가 ( 파일 쓰기 ) ->

 

 

public void writeFile() {
        String fileTitle = "title.txt";
        File file = new File(Environment.getExternalStorageDirectory(), fileTitle);

        try {
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter writer = new FileWriter(file, false);
            String str = "      저장할 내용      ";
            writer.write(str);
            writer.close();
        } catch (IOException e) {

        }
    }

 

 

MainActivity.java 코드추가 ( 파일 읽기 ) ->

 

 

    public void readFile() {

        String fileTitle = "title.txt";
        File file = new File(Environment.getExternalStorageDirectory(), fileTitle);

        try {
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String result = "";
            String line;
            while ((line = reader.readLine()) != null) {
                result += line;
            }
            
            System.out.println( "불러온 내용 : " + result);
            
            reader.close();
        } catch (FileNotFoundException e1) {

        } catch (IOException e2) {

        }

    }

 

 

작성된 파일을 확인하고 싶다면 에뮬레이터 재부팅 후 -> Shift를 2번 (검색창) -> Device File Explorer 검색 ->

storage/self/primary/title.txt 에서 확인 할 수 있다.

 

(File의 경로는 storage/emulated/data/title.txt 경로 이지만 permisson denied라고 뜨며 접근이 불가능하고 위 경로에서 파일을 확인 할 수 있다. 이유는 잘 모르겠다.)

 

 

 

반응형