이 튜토리얼에서는 Kotlin을 사용하여 Android 앱 내부에 텍스트 파일을 생성하고, 사용자가 입력한 데이터를 해당 파일에 저장하는 방법을 단계별로 살펴봅니다.
1단계: 새 프로젝트 생성
Android Studio를 실행한 뒤 File → New Project 메뉴로 이동하여 새 프로젝트를 생성하고, 필요한 모든 세부 정보를 입력해 프로젝트 설정을 완료합니다.
2단계: 레이아웃 작성 (res/layout/activity_main.xml)
아래 코드를 res/layout/activity_main.xml 파일에 추가합니다. 화면에는 제목용 TextView, 사용자 입력을 받을 EditText, 그리고 파일 저장 버튼이 배치됩니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp"
android:background="#008080"
android:padding="5dp"
android:text="TutorialsPoint"
android:textColor="#fff"
android:textStyle="bold" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_marginTop="40dp"
android:ems="10">
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText"
android:layout_centerInParent="true"
android:layout_margin="5dp"
android:background="@android:color/holo_orange_light"
android:onClick="saveTextFile"
android:text="Save File"
android:textColor="@android:color/background_dark"
android:textStyle="bold" />
</RelativeLayout>3단계: 메인 액티비티 구현 (src/MainActivity.kt)
다음 코드를 src/MainActivity.kt에 추가합니다. 핵심 로직은 openFileOutput()을 통해 앱 내부 저장소에 mytextfile.txt라는 파일을 생성하고, EditText에 입력된 텍스트를 OutputStreamWriter로 기록한 뒤 스트림을 닫는 것입니다. 저장이 완료되면 Toast 메시지로 성공 여부를 사용자에게 알려줍니다.
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import java.io.FileOutputStream
import java.io.OutputStreamWriter
class MainActivity : AppCompatActivity() {
lateinit var editText: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
editText = findViewById(R.id.editText)
}
fun saveTextFile(view: View) {
try {
val fileOutputStream: FileOutputStream =
openFileOutput("mytextfile.txt", Context.MODE_PRIVATE)
val outputWriter = OutputStreamWriter(fileOutputStream)
outputWriter.write(editText.text.toString())
outputWriter.close()
// 파일 저장 완료 메시지 표시
Toast.makeText(baseContext, "File saved successfully!", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {
e.printStackTrace()
}
}
}4단계: 매니페스트 설정 (AndroidManifest.xml)
아래 코드를 androidManifest.xml에 추가합니다. 외부 저장소 쓰기 권한(WRITE_EXTERNAL_STORAGE)을 선언하고, MainActivity를 런처 액티비티로 등록합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>앱 실행하기
이제 애플리케이션을 실행해 결과를 확인해 보겠습니다. 실제 Android 스마트폰을 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 상단 툴바의 Run 아이콘을 클릭하세요. 실행 옵션 목록에서 자신의 모바일 기기를 선택하면, 기본 화면이 표시된 앱이 기기에서 실행됩니다.
EditText에 원하는 텍스트를 입력하고 Save File 버튼을 누르면 "File saved successfully!"라는 Toast 메시지가 나타나며, 입력한 내용이 앱 내부 저장소의 텍스트 파일에 정상적으로 저장됩니다.