Android Programming

[Mobile Programming] 데이터 관리 및 파일처리

gangintheremark 2021. 12. 13. 05:02
728x90

데이터 관리

데이터 스토리지 : 안드로이드에서 사용 가능한 데이터 파일

  • 내부 및 외부 저장 메모리 파일
  • 데이터베이스 파일
  • 웹 서버 파일

데이터 저장 위치에 따른 분류

  • 공유 프레퍼런스 : 키-값-쌍으로 사적이고 기초적인 데이터 저장
  • 내부 저장 : 사적인 데이터를 내부 저장소에 저장
  • 외부 저장 : 공유데이터를 공유 외부 저장소에 저장
  • SQLite 데이터베이스 : 구조화된 데이터를 사적인 데이터베이스에 저장
  • 네트워크 연결 : 데이터를 네트워크 서버에 저장

공유 프레퍼런스

  • 애플리케이션 환경 설정에 많이 사용
  • 기초적인 자료형을 '키-값' 쌍으로 저장/복원할 수 있는 방법
  • 저장 데이터는 사용자 애플리케이션이 종료되어도 저장

getSharedPreferences(name, mode)
getPreferences(mode)

프리퍼런스에서 사용되는 메서드

  • 공유 프리퍼런스에서 값을 읽기 위한 메서드
    • getBoolean (String key, boolean defValue)
    • getInt (String key, int defValue)
    • getString (String key, String defValue)
  • 공유 프리퍼런스에서 값을 쓰기 위한 메서드
    • putBoolean (String key, boolean Value)
    • putInt (String key, int Value)
    • putString (String key, String Value)

내부 공간에 파일 만들기

  • 애플리케이션은 장치 내부 저장 공간에 파일 저장
  • 내부 저장된 파일은 해당 애플리케이션만 접근 가능
  • 사용자가 애플리케이션 제거 시 이들 파일들도 제거 → 종속공간

앱 종료 후 다시 실행 시 이어서 작업하고 싶은 경우내장 메모리 파일 처리

  • openFileOutput(), openFileInput() 으로 파일 열기
  • read() 또는 write()으로 파일 읽기/쓰기
  • close() 로 파일 닫기

파일 읽기/쓰기

  • MODE_PRIVATE : 개인적인 용도
  • MODE_APPEND : 기존 것에 붙여줌
  • MODE_WORLD_READABLE : 비영어권 파일들
  • MODE_WORLD_WRITABLE : 비영어권 파일들

메소드

  • Read() : 데이터 읽기
  • Write() : 데이터 쓰기
  • getFileDir() : 절대 경로
  • getDir() : 폴더 생성
  • deleteFile(); : 파일삭제
  • fileList(); : 파일 목록화

raw 폴더 파일 처리

  • openRawResoutce() 메소드를 사용해 접근
  • InputStream 클래스 사용
  • Resource는 프로젝트에 포함된 폴더(읽기 전용)
// raw 폴더 속 raw_test.txt 파일이 존재할 때, 

InputStream inputS = getResources()openRawResoutce(R.raw.raw_test);
byt[] txt = new byte(inputS.available());
inputS.read(txt);
inputS.close();

실습


외부 공간에 파일 만들기

  • 외부 저장 공간은 착탈 가능한 SD카드 사용
  • 저장된 파일들은 누구나 읽기/변경 가능
  • 데이터 읽기 전 외부 미디어 장착 여부 확인
  • 안드로이드는 SD카드에 저장된 데이터에 특별한 인증 절차 없이 접근 허용

내부공간과 외부공간 비교

외부 미디어 장착 여부 검사

  • getExternalStroageState() : SD카드 착탈 확인
// 상태 정보 불러옴
String state = Environment.getExternalStorageState();

// 쓰기/읽기 가능
if(state.equals(Environment.MEDIA_MOUNTED))

// 읽기만 가능
else if(state.equals(Environment.MEDIA_MOUNTED_READ_ONLY))

// 쓰기/읽기 불가능
else

외부 공간에 파일 만들기 - 매니페스트 파일

  • manifest 파일에 외부 저장 공간 사용 허가 받음
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AVD 가상장치의 SD카드에서 파일 읽기

  • SD카드 기본 경로 → 내장 메모리에서 파일 읽기와 큰 차이 없음

SE카드에 공유되는 파일 저장하는 경우

  • GetExternalStoragePublicDirectory 메서드 호출로 File 객체에 대한 것을 얻음
    • MUSIC, PICTURE, RINGTONES 저장
    • 디렉토리 없는 경우, File.mkdirs()에 저장

SD카드에 사적인 공간에 파일 저장하는 경우

  • getExternalFilesDir함수를 통해 획득한 공간 사용
    • 이때 사용된 메서드는 디렉토리 종류를 매개변수로 사용

실습


안드로이드에서의 데이터베이스

  • 데이터베이스 : 대용량의 데이터 집합을 체계적으로 구성해 놓은 것
  • 데이터베이스 관리 시스템 (DBMS) : 데이터베이스를 여러 사용자나 시스템이 공유하도록 함

DBMS 종류

  • 계층형, 망형
  • 관계형, 객체지향형, 객체관계형

관계형 데이터베이스

  • DBMS 중 가장 많이 사용
  • 데이터를 테이블의 형태로 저장
  • 각 테이블들간의 공통된 필드에 의해 두 테이블이 가지고 있는 데이터 사이의 관계 파악

관계형 데이터베이스의 장점

  • 약간만 바꿔도 쉽게 순응할 수 있는 구조
  • 유지보수 편리
  • 대용량 데이터 관리/무결성을 잘 보장

관계형 데이터베이스의 단점

  • 시스템 자원을 많이 차지하여 느려짐

데이터베이스 관련 용어

  • 데이터 : 하나하나의 단편적인 정보
  • 테이블 : 회원 데이터가 표 형태로 표현
  • 데이터베이스 : 테이블이 저장되는 장소, 각각 고유한 이름
  • DBMS : 데이터베이스를 관리하는 시스템 또는 소프트웨어
  • SQL : 사용자와 DBMS 간 소통언어

SQL 명령어

  • 데이터 정의 명령어
    • CREATE : 테이블에 관련된 필드들을 다 지정해서 생성
    • ALTER : 테이블에서 컬럼 추가, 삭제
    • DROP : 테이블에 있는 모든 레코드 제거, 정의 자체를 데이터베이스에서 삭제
    • USE : 어떤 데이터베이스를 사용하는지 지정
  • 데이터 조작 명령어
    • SELECT : 조건을 만족하는 정보 추출
    • INSERT : 데이터 추가
    • DELETE : 데이터 삭제
    • UPDATE : 데이터 갱신

데이터베이스 : java를 위한 기본 개념

  • 결과집합 : 데이터들을 테이블들의 관계를 주어진 조건을 만족하는 데이터를 뽑아낸 결과지합
  • 커서 인터페이스 : 하나의 데이터베이스 테이블에서의 위치 이동

SQLite

  • SQLite는 안드로이드/아이폰 등 많은 모바일 장치에서 사용되는 데이터베이스
  • SQL 라이트 버전에서 SQL에서 사용되는 거의 모든 기능을 완전하게 지원

안드로이드에서 DB객체를 정의하는 방법

  • 상속받아 재정의 하는 방법 : SQLiteOpenHelper 사용하는 방법
  • SQL 문 실행으로 직접 생성하는 방법 : openOrCreateDatabase() 메소드로 데이터베이스 객체 직접 생성

SQLite 프로그래밍

728x90