안드로이드 내부 메모리 파일 처리
사용한 툴 : 이클립스
사용한 버전 : API 16
첨부 파일 : AndFileTest.zip

 


내장 메모리의 저장 위치는 /data/data/패키지명/files 폴더에 저장된다.

저번 포스팅에서 자바는 스트림 형태(바이트형태)로 파일을 읽고 쓰기 때문에 FIleInputStream, FileOutputStream 클래스가 사용한다.

내장 메모리의 파일을 읽을 때 openFileInput(파일명); 메소드를 사용하고 Read메소드로 값을 읽는다.

파일을 쓸 때는 openFileOutput(파일명, 모드명); 메소드로 파일을 지정하고 Write메소드로 값을 출력한다.

openFileOutput은 추가적으로 모드를 설정해야하는데, 모드들은 다음과 같다.

Context.MODE_WORLD_WRITEABLE : 쓰기

Context.MODE_WORLD_READABLE : 읽기

Context.MODE_APPEND : 기존 파일에 추가

Context.MODE_PRIVATE : 개인

사용한 스트림 파일은 close로 닫아줘야 한다.



activity_main.xml

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.filetest.MainActivity" 
    android:orientation="vertical">
    <Button
        android:id="@+id/btnRead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="읽기"
        />
    <Button
        android:id="@+id/btnWrite"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="쓰기"/>
</LinearLayout>
cs



MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.example.filetest;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    Button btnRead,btnWrite;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnRead = (Button) findViewById(R.id.btnRead);
        btnWrite = (Button) findViewById(R.id.btnWrite);
        btnRead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                try {
                    FileInputStream infs = openFileInput("File.txt"); //파일이 없으면 FileNotFoundException예외
                    byte[] temp = new byte[infs.available()]; //파일길이 측정하다가 예외가 발생하면 IOException예외발새
                    infs.read(temp);
                    String strData = new String(temp);
                    Toast.makeText(getApplicationContext(),strData,Toast.LENGTH_SHORT).show();
                    infs.close();
                } catch (FileNotFoundException e) {
                    Toast.makeText(getApplicationContext(),"not file exist." , Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        btnWrite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    FileOutputStream outfs = openFileOutput("File.txt", Context.MODE_WORLD_WRITEABLE);
                    String strTemp = "Java and Andriod!";
                    outfs.write(strTemp.getBytes());
                    outfs.close();
                    Toast.makeText(getApplicationContext(),"make File!",Toast.LENGTH_SHORT).show();
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
 
cs

 


23 ~ 29 '읽기' 버튼을 눌렀을 때 파일을 읽어들여 토스트에 띄우는 온클릭리스너 등록

28 파일의 사이즈를 측정하여 그 사이즈만큼 바이트 배열을 지정한다.

30 읽은 값이 byte형태이기 때문에 String형태로 변환한다.

40 ~ 53 '쓰기' 버튼을 눌렀을 때 파일을 만드는 온클릭리스너 등록. 만들때 같은 이름이 있어도 덮어씌운다.


AndFileTest.zip



+ Recent posts