- 레이아웃 - package com . example . ansan . myapplication ; import android . support . v 7 . app . AppCompatActivity ; import android . os . Bundle ; import android . view . View ; import android . widget . DatePicker ; import android . widget . EditText ; import android . widget . Toast ; import java . io . FileInputStream ; import java . io . FileNotFoundException ; import java . io . FileOutputStream ; import java . io . IOException ; import java . util . Calendar ; public class Main 2 Activity extends AppCompatActivity { EditText ed 1 ; DatePicker date ; String FILENAME = " memo . txt ";// 글 을 쓰 면 memo . txt 로 저장 할 수 있 게 저장 루트 만들 기 / / 앞 에 final 을 쓰 면 변수 이름 을 바꿀 수 없 다 @ Override protected void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout . activity _ main 2 ) ; setTitle ( " 일기 저장 하 기 "); ed 1 = ( EditText ) findViewById ( R . id . editText 1 ) ; date = ( DatePicker ) findViewById ( R . id . datePicker 1 ) ; / / 오늘 의 날짜 를 가져와서 today 에 저장 Calendar today = Calendar . getInstance ( ) ; / / 년 도 저장 int year = today . get ( Calendar . YEAR ) ; / / 월 저장 int month = today . get ( Calendar . MONTH ) ; / / 일 저장 int day = today . get ( Calendar . DAY _ OF _ MONTH ) ; / / 데이트 피커 를 움직일 때 마다 저장 된 데이터 값 을 보여줌 date . init ( year , month , day , new DatePicker . OnDateChangedListener ( ) { @ Override public void onDateChanged ( DatePicker view , int year , int monthOfYear , int dayOfMonth ) { / / 바뀐 날짜 로 파일 이름 을 만든다 makeFilename ( ) ; readDiary ( ) ; } }); } public void readDiary ( ) { / / 2 . 파일 을 연다 try { FileInputStream fis = openFileInput ( FILENAME ) ; / / 3 . 파일 의 내용 을 가져올 byte array 를 만든다 . byte byte _ array [ ] = new byte [ fis . available ( ) ] ; fis . read ( byte _ array ) ; / / 4 . 파일 을 닫 는다 . fis . close ( ) ; / / 5 . byte 를 string 으로 바꾼다 . String content = new String ( byte _ array ) ; / / 6 . 내용 을 Edittext 에 보여준다 . ed 1 . setText ( content ) ; / / 7 . 일기 가 없 다면 , " 일기 없 음 " Toast 를 띄우 고 , edittext 를 지운다 } catch ( FileNotFoundException e ) { Toast . makeText ( getApplicationContext ( ) , " 일기 없 음 ", Toast . LENGTH _ SHORT ) . show ( ) ; ed 1 . setText ( ""); e . printStackTrace ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } / / 공통 적 으로 쓰일 파일 을 여기저기 서 쓸 수 있 도록 만들 어 준다 / / 파일 만들 기 public void makeFilename ( ) { FILENAME = date . getYear ( ) + "_" + ( date . getMonth ( ) + 1 ) + "_" + date . getDayOfMonth ( ) + ". dia "; } public void onSaveClick ( View v ) { String content = ed 1 . getText ( ) . toString ( ) ; / / 내용 이 없 으면 저장 이 되 지 안 도록 록 if ( content . equals ( "")){ Toast . makeText ( this , " 내용 이 없 어용 ", Toast . LENGTH _ SHORT ) . show ( ) ; return ; } makeFilename ( ) ; try { FileOutputStream fos = openFileOutput ( FILENAME , MODE _ PRIVATE ) ; fos . write ( content . getBytes ( ) ) ; fos . close ( ) ; Toast . makeText ( this , FILENAME + " 일기 저장 ", Toast . LENGTH _ SHORT ) . show ( ) ; ed 1 . setText ( ""); } catch ( FileNotFoundException e ) { Toast . makeText ( this , " 파일 생성 오류 ", Toast . LENGTH _ SHORT ) . show ( ) ; e . printStackTrace ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } }} 공유 하 기 글 요소