// WriteToFile Example // Source code file: MainActivity.kt // Write to, read from, and delete a file // named demofile.txt in internal storage. package it372.ssmith.writetofile import android.content.Context import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import java.io.File import java.io.FileOutputStream class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainScreen( ) } } } @Composable fun MainScreen( ) { var fileName = remember { mutableStateOf("demofile.txt") } var ctxt = LocalContext.current var context = remember { mutableStateOf(ctxt) } var output = remember { mutableStateOf("") } Column(modifier = Modifier .padding(all = 40.dp)) { // Write to File MyButton(clickListener = { val file = File(context.value.filesDir, fileName.value) FileOutputStream(file, true).bufferedWriter( ) .use { it.append("Sample text to append.\n") } output.value = "Output saved to File: ${file.absolutePath}" }, content = "Write to File") // Read from File MyButton(clickListener = { val file = File(context.value.filesDir, fileName.value) output.value = if (file.exists( )) file.readText( ) else "File not found" }, content = "Read from File") // Delete file. MyButton(clickListener = { val file = File(context.value.filesDir, fileName.value) if (file.exists( )) { val deleted = file.delete( ) output.value = if (deleted) "File Deleted" else "File not Deleted" } }, content = "Delete File") Text(text = output.value, fontSize = 30.sp) } } @Composable fun MyButton(clickListener : ( ) -> Unit, content : String) { Button(clickListener, modifier = Modifier.padding(bottom = 30.dp)) { Text(text = content, fontSize = 25.sp) } } @Preview(showBackground = true) @Composable fun MainScreenPreview() { MainScreen( ) }