앱 내부 저장소 접근

유시현·2022년 12월 23일
0

Android

목록 보기
9/34

앱 이름 : com.example.myfile
내부저장소 경로 : /data/user/0/com.example.myfile

시나리오

입력값이 앱을 종료하고 다시 켜도 이전 입력값이 남아 있을 수 있게한다.

  1. 앱 종료시 editText 값을 내부 저장소에 저장
@Override
    protected void onStop() {
        super.onStop();

        //텍스트 입출력을 위해서는 I/O stream을 reader/writer 로 변환해야함
        try {
            BufferedWriter bw = new BufferedWriter(
                    new OutputStreamWriter(openFileOutput("memo.txt",MODE_PRIVATE))
                    //default 저장경로는 /data/user/0/com.example.myfile/files 밑에인거 같음
                    //openFileOutput : string을 바이너리 스트림이된다.
            );
            bw.write(et.getText().toString());
            bw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

/data/user/0/com.example.myfile/files/memo.txt 생성

파일 쓸때 아래 방법도 가능(자바에서만 가능하고 안드로이드에서는 불가)

try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"));
            bw.write("123123");
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
  1. 앱 시작시 내부저장소에 지정 위치에 파일이 있으면 그 값을 읽어들여서 editText값을 변경한다.
  File file = new File(getFilesDir(),"memo.txt");//파일 주소값 생성 /data/user/0/com.example.myfile/files/memo.txt
        Log.d(TAG, "file path: "+file);
        if(!file.exists()){//처음엔 이 파일이 없음
            return;
        }

        BufferedReader br = null;
        try {
            br = new BufferedReader(
                    new InputStreamReader(openFileInput("memo.txt")));
            //InputStreamReader(InputStream in)
            //openFileInput : stirng to InputStream
            et.setText(br.readLine());
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

파일 읽을때 아래 방법도 가능(자바에서만 가능하고 안드로이드에서는 불가)

try {
            BufferedReader br = new BufferedReader(new FileReader("output.txt"));
            String line;
            while((line=br.readLine())!=null){
                //한줄씩 읽는다
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

깃헙
https://github.com/yoosh199/Andorid-Study/tree/main/MyFile

profile
안드로이드 ,ios 공부하고 있습니다

0개의 댓글