728x90
안녕하세요. 이번 시간에는 입력한 내용을 텍스트 파일에 저장해보겠습니다.
생성될 텍스트 파일의 위치는 Download 폴더의 File폴더 입니다.
먼저 실행 결과입니다.
전체 코드입니다.
메니페스트에 추가해주세요.
// 파일을 생성하기 위해 필요한 권한.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
MainActivity.java 파일 코드입니다.
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
// 디렉토리 경로
final static String foldername = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() +"/File";
// 파일 이름
final static String filename = "file.txt";
// 내용 입력받을 view
EditText textBox;
// 파일 저장 버튼
Button btnSave;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textBox = findViewById(R.id.textbox);
btnSave = findViewById(R.id.btn_save);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 파일 작성시간 (현재시간으로)
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// 파일 내용 생성
String contents = "파일 내용 :"+textBox.getText().toString()+" \n 파일 작성 시간 : "+now+"\n";
// 파일 없으면 생성 후 파일안에 내용 저장.
WriteTextFile(foldername, filename, contents);
}
});
}
// foldername : 파일 저장할 디렉토리 경로
// filename : 파일 이름
// contents : 저장할 내용.
public void WriteTextFile(String foldername, String filename, String contents){
try{
// foldername 경로의 파일 객체 생성 (디렉토리를 가리키고 있고, 해당 경로에 디렉토리가 없어도 File 객체 생성됨.)
File dir = new File (foldername);
//디렉토리 폴더가 없으면 생성함
if(!dir.exists()){
// 디렉토리 생성.
// 만들고자 하는 디렉토리의 상위 디렉토리가 존재하지 않을 경우, 생성 불가
dir.mkdir();
}
// 생성한 FileOutputStream 객체를 통해 파일을 생성, 내용 작성한다.
// 기존 파일에 내용을 추가 할려면 두번째 인자로 true를 적어 준다. true를 추가해도 없으면 만든다.
FileOutputStream fos = new FileOutputStream(foldername+"/"+filename, true);
// 문자열을 바이트배열로 변환해서 파일에 저장한다.
fos.write(contents.getBytes());
// 파일 닫기.
fos.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
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">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/textbox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="텍스트를 입력해주세요."
android:minLines="3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="저장하기"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textbox" />
</androidx.constraintlayout.widget.ConstraintLayout>
'안드로이드 자바' 카테고리의 다른 글
[Android][JAVA] TextToSpeech를 사용해 텍스트(Text)를 음성으로 바꾸기 (0) | 2023.06.26 |
---|---|
[Android][JAVA] Notification 알림창에 액션(버튼) 기능 추가하기 (0) | 2023.06.25 |
[Android][JAVA] 이미지 투명 애니메이션 구현하기 (0) | 2023.06.21 |
[Android][JAVA] Youtube API를 이용하지 않고 유튜브 영상 재생하기 (0) | 2023.06.20 |
[Android][JAVA]TimePickerDialog 예제 (0) | 2023.06.18 |