자바 웹 개발자가 될거야/JAVA

[Android] 파일 처리하기 / 파일 저장 및 읽어오기

whitz 2022. 1. 24. 11:27

< 파일 처리하기 >

 

- 파일을 읽기 위해서 openFileInput() 메소드를 사용하면 FileInputStream 반환

- 파일을 쓰기 위해서 openFileOutput() 메소드를 사용하면 FileOutputStream 반환

 

 

① 파일 저장하기

 

- 화면에 버튼 2개를 이용해서 파일을 저장하고 불러오는 기능을 구현해 보겠다

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="내장 메모리 파일 쓰기"
        android:id="@+id/writeBtn" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="내장 메모리 파일 읽기"
        android:id="@+id/readBtn" />


</LinearLayout>

 

package com.example.fileex1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button wBtn = findViewById(R.id.writeBtn);
        Button rBtn = findViewById(R.id.readBtn);

        wBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    FileOutputStream outFs = openFileOutput("file.txt", Context.MODE_PRIVATE);
                    String msg = "쿡북 안드로이드" ;
                    outFs.write(msg.getBytes());
                    Toast.makeText(getApplicationContext(),"저장됨",Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(),e.getLocalizedMessage(),
                            Toast.LENGTH_SHORT).show();
                }

            }
        });
}

 

파일 쓰기 버튼 클릭시 '저장됨' 메세지 등장

 

 

- file.txt 저장된 위치 찾기

 

  · 내장 메모리의 저장 위치는 /data/data/패키지명/files 폴더

  · 오른쪽 하단에 있는 Device File Explorer 클릭 > data 폴더 > data 폴더 > com.example.fileex1 폴더 > file 폴더 

 

- file.txt 다른 장소에 저장하기

 

  · file.txt 우클릭 > Sava As > 저장하고 싶은 다른 장소 지정

 

 

 

② 파일 읽어오기

 

- 저장한 파일을 파일 읽기 버튼을 클릭하면 toast 메세지로 파일명이 뜨도록 구현

- MainActivity 안 읽기버튼 메서드 아래에 추가 작성

 

rBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        try {
            FileInputStream inFs = openFileInput("file.txt");
            byte[] result = new byte[1024];
            int resultLength = inFs.read(result);
            String s = new String(result, "utf-8");
            Toast.makeText(getApplicationContext(),s,
            Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(),e.getLocalizedMessage(),
            Toast.LENGTH_SHORT).show();
        }
    }
});

 

파일 읽기 버튼 클릭시 저장된 메세지 보여줌