[안드로이드/android] 텍스트 파일을 이용한 간단한 메모 앱 만들기

Posted by 앱해피
2015. 6. 25. 23:33 안드로이드 스튜디오

텍스트 파일 입출력을 이용해서 간단한 메모앱 만들기

 

간단히 사용자가 입력한 텍스트를 저장하고 불러올 수 있는 메모장 앱을 구현하기.

 

메모를 입력할 수 있는 에디트텍스트와 하나의 텍스트를 저장하고, 불러오고, 삭제하는 세 가지 버튼이 배치된다.

 

 

fileoutputStream, fileinputstream, openfileoutput, openfileinput, 메모장, 안드로이드, android

 

 

 

 

 

res/layout/activity_main.xml - 레이아웃 파일

 


 

 

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">

<LinearLayout
android:id="@+id/btn_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal">

<Button
android:id="@+id/load_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="불러오기"
android:onClick="onClick"/>

<Button
android:id="@+id/save_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="저장"
android:onClick="onClick"/>

<Button
android:id="@+id/delete_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="삭제"
android:onClick="onClick"/>

</LinearLayout>

<EditText
        android:id="@+id/memo_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/btn_layout"
android:hint="메모할 내용을 입력하세요."
android:gravity="top"
android:background="@android:drawable/edit_text"/>
</RelativeLayout>
 
 
 
 
 


src/TextFileManager.java  - 메모(파일 관리하는 함수)

 


 


public class TextFileManager {

private static final String FILE_NAME = "Memo.txt";
// 메모 내용을 저장할 파일 이름
Context mContext = null;

public TextFileManager(Context context) {
mContext = context;
}

// 파일에 메모를 저장하는 함수
public void save(String strData) {
if( strData == null || strData.equals("") ) {
return;
}

FileOutputStream fosMemo = null;

try {
// 파일에 데이터를 쓰기 위해서 output 스트림 생성
fosMemo = mContext.openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
// 파일에 메모 적기
fosMemo.write( strData.getBytes() );
fosMemo.close();
} catch (Exception e) {
e.printStackTrace();
}
}

// 저장된 메모를 불러오는 함수
public String load() {
try {
// 파일에서 데이터를 읽기 위해서 input 스트림 생성
FileInputStream fisMemo = mContext.openFileInput(FILE_NAME);

// 데이터를 읽어 온 뒤, String 타입 객체로 반환
byte[] memoData = new byte[fisMemo.available()];
while (fisMemo.read(memoData) != -1) { }

return new String(memoData);
} catch (IOException e) { }

return "";
}

// 저장된 메모를 삭제하는 함수
public void delete() {
mContext.deleteFile(FILE_NAME);
}
}
 
 
 
 
 

 

src/MainActivity.java

 


public class MainActivity extends AppCompatActivity {

EditText mMemoEdit = null;
TextFileManager mTextFileManager = new TextFileManager(this);

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

mMemoEdit = (EditText) findViewById(R.id.memo_edit);
}

public void onClick(View v) {
switch (v.getId()) {
// 1. 파일에 저장된 메모 텍스트 파일 불러오기
case R.id.load_btn: {
String memoData = mTextFileManager.load();
mMemoEdit.setText(memoData);

Toast.makeText(this, "불러오기 완료", Toast.LENGTH_LONG).show();
break;
}

// 2. 에디트텍스트에 입력된 메모를 텍스트 파일로 저장하기
case R.id.save_btn: {
String memoData = mMemoEdit.getText().toString();
mTextFileManager.save(memoData);
mMemoEdit.setText("");

Toast.makeText(this, "저장 완료", Toast.LENGTH_LONG).show();
break;
}

// 3. 저장된 메모 파일 삭제하기
case R.id.delete_btn: {
mTextFileManager.delete();
mMemoEdit.setText("");

Toast.makeText(this, "삭제 완료", Toast.LENGTH_LONG).show();
}
}
}
}