본문 바로가기

ANDROID의 속삭임

[android][기초][내부저장]파일 입출력.

* MainActivity.java

package com.example.ex5;


import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;


import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;


public class MainActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

///////////////////////////////////////////////////

// 파일 쓰기                                                       //

///////////////////////////////////////////////////

//파일 이름

String fileName = "My_file.txt"; // 저장 되는 위치 : /data/data/{앱 경로}/files/my_file.txt

// 파일에 쓸 문자열

String msg = "Hello World.";

try{

//파일 생성 후 쓰기


//파일 오픈 ( 파일명, 가시성 모드 )

FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);

//파일 기록

fos.write(msg.getBytes());

//파일 close

fos.close();

}catch(IOException e){

Log.d( this.getClass().getName(), e.getMessage() );

e.printStackTrace();

}

///////////////////////////////////////////////////

// 파일 읽기                                                       //

///////////////////////////////////////////////////

try{

FileInputStream fis = openFileInput(fileName);

InputStreamReader isr = new InputStreamReader(fis);

//임의의 길이로 문자열을 읽는다.

StringBuilder sb = new StringBuilder();

char[] inputBuffer = new char[2048];

int end;

// 버퍼에 데이터를 채운다.

while(( end = isr.read(inputBuffer)) != -1 ){

sb.append(inputBuffer, 0, end);

}

// 바이트를 문자열로 변환한다.

String readString = sb.toString();

Log.i("LOG_TAG", "Read string: " + readString);

// 파일을 삭제 할 수도 있다.

deleteFile(fileName);

}catch(IOException e){

e.printStackTrace();

}

}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}


}