투케이2K

87. (AndroidStudio/android/java) 텍스트 (text) 파일 쓰기 (저장) 및 읽기 (호출) 수행 본문

Android

87. (AndroidStudio/android/java) 텍스트 (text) 파일 쓰기 (저장) 및 읽기 (호출) 수행

투케이2K 2021. 3. 15. 18:27

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//================ [AndroidManifest.xml 파일] ================
//TODO ==== 퍼미션 정의 부분 ====
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


//TODO ==== application 부분 ====
android:requestLegacyExternalStorage="true"






//================ [java 파일] ================
/** [필수 사항]
1. Manifest에 정의한 퍼미션 허용을 요청 받아야합니다
2. try catch 에러 구문 처리를 실시해야합니다
*/



//TODO ==== 전역변수 정의 부분 ====
public static String saveStorage = ""; //저장된 파일 경로
public static String saveData = ""; //저장된 파일 내용



//TODO ==== 텍스트 저장 메소드 ====
public void setSaveText(String data){
	try {
		saveData = data; //TODO 변수에 값 대입
		String textFileName = "/Data.txt";
		//TODO 파일 생성
		File storageDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/SaveStorage"); //TODO 저장 경로
		//TODO 폴더 생성
		if(!storageDir.exists()){ //TODO 폴더 없을 경우
			storageDir.mkdir(); //TODO 폴더 생성
		}

		long now = System.currentTimeMillis(); //TODO 현재시간 받아오기
		Date date = new Date(now); //TODO Date 객체 생성
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
		String nowTime = sdf.format(date);

		//BufferedWriter buf = new BufferedWriter(new FileWriter(storageDir+textFileName, true)); //TODO 다중으로 내용적음 (TRUE)
		BufferedWriter buf = new BufferedWriter(new FileWriter(storageDir+textFileName, false)); //TODO 한개 내용만 표시됨 (FALSE)
		buf.append("["+nowTime+"]" + "\n["+saveData+"]"); //TODO 날짜 쓰기
		buf.newLine(); //TODO 개행
		buf.close();

		saveStorage = String.valueOf(storageDir+textFileName); //TODO 경로 저장 /storage 시작
		//saveStorage = String.valueOf(storageDir.toURI()+textFileName); //TODO 경로 저장 file:/ 시작
		S_Preference.setString(getApplication(), "saveStorage", String.valueOf(saveStorage)); //TODO 프리퍼런스에 경로 저장한다
		S_Preference.setString(getApplication(), "saveStorage", String.valueOf(saveStorage)); //TODO 프리퍼런스에 경로 저장한다

		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_TextFile > 저장한 텍스트 파일 확인 실시]");
		Log.d("","\n"+"[경로 : "+String.valueOf(saveStorage)+"]");
		Log.d("","\n"+"[제목 : "+String.valueOf(nowTime)+"]");
		Log.d("","\n"+"[내용 : "+String.valueOf(saveData)+"]");
		Log.w("//===========//","================================================");
		Log.d("---","---");

		Toast.makeText(getApplication(),"텍스트 파일이 저장되었습니다",Toast.LENGTH_SHORT).show();
	}
	catch (Exception e){
		e.printStackTrace();
	}
}



//TODO ==== 텍스트 호출 메소드 ====
public void getSaveText(){
	try {
		saveStorage = S_Preference.getString(getApplication(), "saveStorage"); //특정 데이터 가져온다
		if(saveStorage != null && saveStorage.length() > 0){

			String data = "";
			String line = ""; //TODO 한줄씩 읽기

			File storageDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/SaveStorage"); //TODO 저장 경로
			//TODO 폴더 생성
			if(!storageDir.exists()){ //TODO 폴더 없을 경우
				storageDir.mkdir(); //TODO 폴더 생성
			}
			try {
				BufferedReader buf = new BufferedReader(new FileReader(saveStorage));
				while((line=buf.readLine())!=null){
					data += line;
					data += "\n";
				}
				buf.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			Log.d("---","---");
			Log.w("//===========//","================================================");
			Log.d("","\n"+"[A_TextFile > 저장된 텍스트 파일 확인 실시]");
			Log.d("","\n"+"[경로 : "+String.valueOf(saveStorage)+"]");
			Log.d("","\n"+"[내용 : "+String.valueOf(data)+"]");
			Log.w("//===========//","================================================");
			Log.d("---","---");
		}
		else {
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_TextFile > 저장된 텍스트 파일 확인 실시]");
			Log.d("","\n"+"[경로 : "+""+"]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
			Toast.makeText(getApplication(),"저장된 텍스트가 없습니다. 텍스트를 저장해주세요",Toast.LENGTH_SHORT).show();
		}
	}
	catch (Exception e){
		Toast.makeText(getApplication(),"저장된 텍스트가 없습니다. 텍스트를 저장해주세요",Toast.LENGTH_SHORT).show();
		e.printStackTrace();
	}
}

/* =========================== */

[결과 출력]

/* =========================== */

반응형
Comments