안드로이드 내부 메모리 파일 처리
사용한 툴 : 이클립스
사용한 버전 : 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 | 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 '쓰기' 버튼을 눌렀을 때 파일을 만드는 온클릭리스너 등록. 만들때 같은 이름이 있어도 덮어씌운다.
'프로그래밍 > Java, Android' 카테고리의 다른 글
(안드로이드) 파일처리 - SD카드 저장 (0) | 2016.07.10 |
---|---|
(안드로이드) 파일처리 - raw폴더 파일 처리 (0) | 2016.07.10 |
(Java) 파일복제 소스 (0) | 2016.07.10 |
(Java) 제네릭 (0) | 2016.07.10 |
(Java) 파일 입력과 출력 - FileInputStream, FileOutputStream (0) | 2016.07.10 |