[AndroidStudio] FileIO

han91·2024년 5월 27일

[AndroidStudio]

목록 보기
13/15

MainActivity.kt

class MainActivity : AppCompatActivity() {

    val binding by lazy {
        ActivityMainBinding.inflate(layoutInflater)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
//        // 객체 선언
//        val testfile = FileUtil()
//        // $filesDir = data/data/files
//        var content = testfile.readTextFile("$filesDir/xyz.txt")
//
        var content2 = ""
        // input으로 들어온 xyz를 한줄씩 읽어라
        // openFileInput => 디렉토리 지정 안 해줘도 됨 자동으로 읽어옴
        openFileInput("xyz.txt").bufferedReader().useLines { lines ->
            content2 = lines.joinToString("\n")
        }

        binding.btnRead.setOnClickListener {
            binding.textView.text = content2
        }

        var content3 = content2 + "\n\n Writing Test"
        
        binding.btnWrite.setOnClickListener {
            // MODE_PRIVATE를 해줘야함
            // openFileOutput => 얘도 마찬가지
            openFileOutput("xyz2.xtx", Context.MODE_PRIVATE).use { stream ->
                stream.write(content3.toByteArray())
            }
        }
    }
}

FileUtil.kt

import java.io.BufferedReader
import java.io.File
import java.io.FileReader

class FileUtil {
    // 이 함수는 String 값을 리턴함
    // file 의 text 를 읽어 주는 함수, 경로를 String 으로 입력 받음
    fun readTextFile(fullPath: String) : String {
        val file = File(fullPath)
        // file 이 존재 하지 않는 경우 => 공백 문자열 return
        if(!file.exists()) return ""
        // file 과 연결
        val reader = FileReader(file)
        // 연결된 reader 를 BufferedReader 로 한 줄씩 읽어줌
        val buffer = BufferedReader(reader)
        // 한 줄씩 읽을 때마다 저장할 변수
        var temp = ""
        // String 을 저장 하는 Buffer
        val result = StringBuffer()

        // file 의 길이가 얼마나 될지 몰라서 true 로 작성
        while (true) {
            // buffer 를 한 줄 읽고 temp 에 저장
            temp = buffer.readLine()
            // temp 가 null 일 때 => file 의 모든 줄을 다 읽었을 때 while 문 나감
            if (temp == null) break
            else result.append(buffer)
        }
        // 다 읽었으면 close 해줘야 함
        buffer.close()
        return result.toString()
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <TextView
        android:id="@+id/textView"
        android:layout_width="200dp"
        android:layout_height="400dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="TextView"
        android:textSize="20sp"/>

    <Button
        android:id="@+id/btnRead"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Read" />

    <Button
        android:id="@+id/btnWrite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Write" />

</LinearLayout>
profile
천방지축어리둥절빙글빙글돌아가는개발자

0개의 댓글