안녕하세요.
오늘은 안드로이드 파일처리에 대해서 알아보겠습니다.
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라고 뜨며 접근이 불가능하고 위 경로에서 파일을 확인 할 수 있다. 이유는 잘 모르겠다.)
'컴퓨터 > 안드로이드' 카테고리의 다른 글
[안드로이드] google maps api 사용하기 (0) | 2020.04.25 |
---|---|
[안드로이드] pixel 에서 dp , dp 에서 px 사이즈 변환 (0) | 2020.04.23 |
[안드로이드] 대화상자(Dialog) 사용하기 (0) | 2020.04.21 |
[안드로이드] 토스트(toast) 메시지 사용하기 (0) | 2020.04.21 |
[안드로이드] xml을 이용해 컨텍스트 메뉴(ContextMenu) 사용하기 (0) | 2020.04.20 |