안드로이드 앱 데이터 개요

Android App Data

App Data 저장방법 설명
File File 시스템을 사용해 데이터를 저장합니다. 앱의 독립된 내 • 외부 저장소에 저장할 수 있습니다
Shared Preference 'Key - Value' 형태로 데이터를 저장합니다. 앱의 독립된 내부 저장소에 저장됩니다. (간편)
Sqlite 안드로이드에서 자체 제공하는 데이터베이스를 사용해 구조화된 데이터를 저장합니다.
Network 네트워크를 사용해 데이터를 백엔드 서버에 저장합니다.

 

1. File 예제

package com.jhs.quizlocker

import android.app.usage.ExternalStorageStats
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.text.TextUtils
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_file_ex.*
import java.io.FileNotFoundException

class FileExActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceStateBundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_file_ex)

        val filename = "data.txt"

        saveButton.setOnClickListener {
            val text = textField.text.toString()
            when {
                TextUtils.isEmpty(text) -> {
                    Toast.makeText(applicationContext, "Text is empty"Toast.LENGTH_LONG).show()
                }

                Environment.getExternalStorageState() != Environment.MEDIA_MOUNTED -> {
                    Toast.makeText(applicationContext, "External storage is not available"Toast.LENGTH_LONG).show()
                } else -> {
                    saveToInnerStorage(text, filename)
                }
            }
        }

        loadButton.setOnClickListener {
            try {
                textField.setText(loadFromInnerStorage(filename))
            } catch (eFileNotFoundException) {
                Toast.makeText(applicationContext, "saved data dose not exist"Toast.LENGTH_LONG).show()
            }
        }
    }

    fun saveToInnerStorage(textStringfilenameString) {
        val fileOutputStream = openFileOutput(filename, Context.MODE_PRIVATE)
// *파일 여는 모드 종류
        fileOutputStream.write(text.toByteArray())
        fileOutputStream.close()
    }

    fun loadFromInnerStorage(filenameString): String {
        val fileInputStream = openFileInput(filename)
        return fileInputStream.reader().readText()
    }
}

파일을 여는 모드 종류

참조할만한 함수

getFilesDir(): 내부 파일이 저장된 파일 시스템 디렉토리의 절대 경로를 가져옵니다.

getDiKString name, int mode): 내부 저장소 공간 내부에 name 디렉토리가 있으면 해당 File 객체를 반환 하고, 없으면 File 객체를 만든 후에 반환합니다. mode는 위의 표에서 설명 한 파일 모드입니다.

deleteFile(String name): 내부 저장소에 name으로 저장된 파일을 삭제합니다.

fileList(): 앱이 현재 저장한 파일명의 문자열 배열을 반환합니다.

 

외부저장소 사용시 권한요청

AndroidManifest.xml

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

API LEVEL(18)부터는 특별한 권한을 요청할 필요가 없다. 그래서 maxSDKVersion속성으로 특정 버전 이후 로는 권한을 요청하지 않도록 할 수 있다. 아래는 외부 저장소 사용 코드

 

 

 

 

 

'Android Studio' 카테고리의 다른 글

Android & Firebase 연동  (0) 2021.07.07
kotlin-android-extensions  (0) 2021.06.26
SharedPreferences  (0) 2019.06.06

이 글을 공유하기

댓글

Designed by JB FACTORY