Android Application
Kotlin 파일처리 : 앱(App) Cache Write ,Read
작성자 임베디드코리아
작성일 23-10-03 23:04
조회1,688회
댓글0건
-------------------------------------------------------------------------------------
activity_main.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="55dp"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintVertical_bias="0.2"/>
<Button
android:text="Cache Write"
android:layout_width="148dp"
android:layout_height="81dp"
android:id="@+id/write"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="0.361"
app:layout_constraintHorizontal_bias="0.1"/>
<Button
android:text="Cache Read"
android:layout_width="148dp"
android:layout_height="81dp"
android:id="@+id/read"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="0.361"
app:layout_constraintHorizontal_bias="0.8"/>
<Button
android:id="@+id/clear"
android:layout_width="396dp"
android:layout_height="78dp"
android:text="EditText Clear"
app:layout_constraintBottom_toBottomOf="@+id/DataTV"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.8"
tools:layout_editor_absoluteX="1dp" />
<TextView
android:id="@+id/DataTV"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#E5FB15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/clear"
app:layout_constraintVertical_bias="0.15"
tools:layout_editor_absoluteX="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
------------------------------------------------------------------------------------
MainActivity.kt
------------------------------------------------------------------------------------
class MainActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val read = findViewById<Button>(R.id.read)
val write = findViewById<Button>(R.id.write)
val clear = findViewById<Button>(R.id.clear)
read.setOnClickListener(this)
write.setOnClickListener(this)
clear.setOnClickListener(this)
}
override fun onClick(view: View?) {
val edit = findViewById<EditText>(R.id.editText)
if(view?.id==R.id.read){
loadCache()
}
else if(view?.id==R.id.write){
var data:String = edit.text.toString()
// data="ppppppp"
val file = File(cacheDir, "myCache")
val outputStream = FileOutputStream(file)
outputStream.write(data.toByteArray())
outputStream.close()
Toast.makeText(applicationContext, "data.toByteArray() saved", Toast.LENGTH_LONG).show()
}
else if(view?.id==R.id.clear){
edit.setText("")
//clear 버튼을 누를시 입력창을 지운다.
}
}
private fun saveCache(data: String) {
try {
val file = File(cacheDir, "myCache")
val outputStream = FileOutputStream(file)
outputStream.write(data.toByteArray())
outputStream.close()
Toast.makeText(applicationContext, "data.toByteArray() saved", Toast.LENGTH_LONG).show()
} catch (e: IOException) {
e.printStackTrace()
}
}
private fun loadCache(){
try {
val file = File(cacheDir, "myCache")
if (!file.exists()) file.createNewFile()
val inputStream = FileInputStream(file)
val s = Scanner(inputStream)
var text:String = ""
while (s.hasNext()) {
text += s.nextLine()
}
inputStream.close()
Toast.makeText(applicationContext, "FileInputStream", Toast.LENGTH_LONG).show()
var dataTV: TextView = findViewById(R.id.DataTV)
dataTV.text = text
} catch (e: IOException) {
e.printStackTrace()
}
}
}
158-840 서울시 양천구 남부순환로 571(신월동, 영남타운 307호) l 대표: 박길성 ㅣ Tel:02-2695-1114 ㅣ Fax:02-2695-1113
Copyright © 2015 Embedded Korea. All Rights Reserved.