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>