이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 강다인
개발환경은 Windows, Android Studio입니다.
1. 파일 쓰기: Write
먼저 xml 탭에서 ImageVies와 textView 위젯을 사용하여 다음과 같이 화면을 구성합니다.
btnSave 버튼을 누르면 content, directort_name, filename을 파라미터로 갖는 writeTextFile을 실행하도록 한다.
binding.btnSave.setOnClickListener
{
val content = binding.textWrite.text.toString()
val directory_name = "memo"
val filename = "memo02.txt"
writeTextFile(directory_name, filename, content)
}
함수 writeTextFile를 정의 한다. 변수 dir을 file의 directory 값을 갖도록 선언한다. If 만약 dir이 없다면 dir.mkdirs 메써드를 사용하여 dir값을 생성한다.
fun writeTextFile(directory: String, filename: String, content: String) {
val dir = File(filesDir.path +"/"+directory)
if(!dir.exists())
dir.mkdirs()
}
dir.path에 filename을 더해서 변수 fullPath를 선언하여 전체 파일 위치를 나타낸다. FileWriter(위치) 메써드로 파일을 작성한다. 그리고 속도를 빠르게 하기 위해서 buffer를 사용한다.
val fullPath = dir.path + "/" + filename
val writer = FileWriter(fullPath)
val buffer = BufferedWriter(writer)
buffer.write(content)
buffer.close()
writer.close()}
이제 에뮬레이터를 앱을 실행하면 왼쪽 아래와 같은 화면이 나타난다. 그리고 Hello를 입력하고 저장한다.
DeviceFileExplorer를 통해서 입력한 값(Hello)이 앱 데이터에 저장되어 있는 것을 확인할 수 있다.
2. 파일 읽기:Read
Path를 파라미터로 갖고 retrun 값을 String으로 갖는 함수 ‘readTextfile’을 정의한다. If 만약 fullpath값이 없다면 “”값(빈)을 retrun한다.
읽기 매써드 FileReader(위치)를 사용하여 val 변수 reader를 선언한다. Write와 마찬가지로 buffer를 사용하고 while 반복문을 사용하여 한 줄씩 읽어온다. 그리고 그 읽은 값을 저장하기 위해 BufferReadr매써드를 사용하여 val 변수 result를 선언한다. 변수 result가 nul일 때 while반복문을 나가도록 하면 나갈 때 값이 저장되지 않으므로 변수 temp를 선언해준다.
val reader = FileReader(fullpath)
val buffer = BufferedReader(reader)
val result = StringBuffer()
var temp:String? = ""
while(true) {
temp = buffer.readLine()
if(temp == null )
break
result.append(temp)
}
buffer.close()
reader.close()
return result.toString()
다음 val 변수 path와 writtenContent를 선언해준다.
val path = directory_name + "/" + filename
val writtenContent = readTextFile(path)
그리고 ‘textRead’ textView위젯의 내용을 writtenContent로 만들어준다.
textRead.text = writtenContent
이제 에뮬레이터를 앱을 실행하면 왼쪽 아래와 같은 화면이 나타난다. 그리고 Hello를 입력하고 저장한다. 그러면 textRead’ textView위젯에 Hello가 입력된 것을 볼 수 있다.
'GDSC HUFS 3기 > Android with Kotlin Team 3' 카테고리의 다른 글
[3팀] Android와 SQLite 데이터베이스 (0) | 2021.11.30 |
---|---|
[3팀] 16-2 Shared preference로 상태 값 지정하기 (0) | 2021.11.30 |
[3팀] 14-8 화면 구성하기: 커스텀 위젯 (0) | 2021.11.14 |
[3팀] 14-7 화면 구성하기: 커스텀 뷰 이용하기 (0) | 2021.11.14 |
[3팀] 15 권한처리 permission, 15-2 BaseActivity 설계하기. (0) | 2021.11.14 |