안드로이드

[안드로이드] 앱 내부 저장소를 이용한 파일 입출력

2023. 5. 30. 12:34
글 목차


728x90

앱 내부의 저장소에 txt파일을 만들고 그 txt파일을 읽는 코드를 작성한다.

 

1. xml 작성
2. MainActivity 작성
   a) 앱이 실행되자 마자 파일을 읽는 메서드 작성
   b) 버튼의 리스너 작성

 

1. xml 작성

1. 읽은 파일의 내용이 적힐 TextView
2. 파일 내용을 작성할 PlainText
3. 파일 내용을 저장할 버튼 Button

세 가지를 만든다.

 

2. MainActivity 작성

package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.myapplication.databinding.ActivityMainBinding
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.File
import java.io.FileReader
import java.io.FileWriter

class MainActivity : AppCompatActivity() {
    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding) {
            val filename = "memo01.txt"
            val directory_name = "memo"
            btnSave.setOnClickListener {
                val content = textWrite.text.toString()
                Log.d("ggg", content)
                writeTextFile(directory_name, filename, content)
            }
            val path = directory_name + "/" + filename
            val writtenContent = readTextFile(path)
            textRead.text = writtenContent
        }
    }

    fun readTextFile(path: String): String {
        Log.d("ggg", filesDir.path + "/" + path)
        val fullpath = File(filesDir.path + "/" + path)
        if(!fullpath.exists()) return ""

        val reader = FileReader(fullpath)
        val buffer = BufferedReader(reader)

        val result = StringBuilder()

        var temp: String? = ""
        while(true) {
            temp = buffer.readLine()
            if(temp == null) break
            result.append(temp + "\n")
        }
        Log.d("ggg", result.toString())
        return result.toString()
    }

    fun writeTextFile(directory: String, filenmae:String, content:String) {
        val dir = File(filesDir.path + "/" + directory)
        if(!dir.exists()) dir.mkdirs()

        val fullpath: String = dir.path + "/" + filenmae
        Log.d("ggg", "저장결로" + fullpath)
        val writer = FileWriter(fullpath)
        val buffer = BufferedWriter(writer)
        buffer.write(content)
        buffer.close()
        writer.close()
        Log.d("ggg", "gggggg")
    }
}
728x90
안드로이드
[안드로이드] 앱 내부 저장소를 이용한 파일 입출력