안드로이드 스튜디오/Java

안드로이드 스튜디오 : 데이터 파일 처리하기

류창 2021. 11. 26. 23:16
반응형

이번 포스팅은 안드로이드로 파일을 쓰고,

불러오는 파일 처리기능을 알아보겠습니다.

 

 

 

 

 

데이터를 저장 , 관리를 하는방법은 다양한 방법이 있습니다.

 

1.파일 기반
2.Shared preferences
3.Database

 

이번에 3가지방법을 모두 다뤄보겠습니다.

 

 

 

 

파일기반으로 데이터 저장, 관리하기

 

 

파일을 생성하여 데이터를 저장하려면  openFileOutput() 메소드를 사용하면된다.

반환값으로 FileOutputStream이 반환된다.

 

openFileOutput의 name파라미터는 파일명의 이름을, 두번째 파라미터로 쓰는 방식을 설정한다.

 

Context.Mode_Private가 무엇일까?

 

 

 

파일을 생성하는 default모드고, 선언한 어플리케이션만 접근할수있는 모드다.

 

-> outputStream.write()로  쓰고싶은 String을 입력하면된다.

 

단, 입력할때 문자열을  .getBytes()로  byte화 시켜야한다. 

 

그래야만 문자열을 인코딩할때 문자가(한글) 안깨진다.

 

 

실행시켜보면 정상적으로 file.txt가 생성된걸 볼수있다.

 

 

 

파일을 만드는법을 알았으면, 반대로 만들어진 파일을 읽어오는 법도 알아야하겟죠?

 

 

Resource 폴더에 패키지 생성하고 파일을 만들어보자.

 

자바코드 이외의 모든 자원 (xml,txt ...) 등등 은 모두 res(Resource)패키지안에 들어간다 생각하면 된다.

 

아무런 글을 써서 읽기 전용 파일을 생성하자.

 

 

 

파일을 쓸때  outputStream과는 반대로,  파일을 읽을땐 InputStream을 사용합니다.

 

읽고 쓰는 방법은 다양합니다. 주석처리로된  FileInputStream  = openFileInput() 을 사용하셔도되고,

InputStream = getResources().openRawResuorce()를 사용하셔도됩니다.

 

byte[]는 읽을 txt의 크기를 정해줍니다.

 

선언한 inputStream에게 만들어둿던 raw_text를 read() 명령을 내립니다.

->읽은 결과는 txt에게 저장

 

txt는 byte[]배열로 저장되어있기때문에 문자열로만들을 필요가있습니다.

 

String str= new String(txt); 로 문자열로 바꿔줍니다.

 

참고:

우리가 String으로 자주 바꾸는 메소드 toString()이 있으신건 아시나요?

그걸사용해서 String str= txt.toString() 으로 바꾸시면 안됩니다. 

txt는 byte[]배열인걸 기억하셔야합니다.  그러면 배열이 toString()화 되면서,

요런 괴상한 문자가나오니 조심하셔야합니다.

 

 

 

 

이상한 ? 가 많이 뜨는데... 원인이 무엇일까요?

 

저 ?의 정체는 공백입니다. 그렇다면 공백을  지워야겟죠!

 

 

아까 코드에 .trim() 메소드만 추가하시면됩니다.  공백을 제거해주는 메소드죠

 

잘 나옵니다!

 

2.Shared preferences로 파일 관리하기

 

 

Shared preference의 가장큰 특징은  Key, value값으로 데이터를 저장한다는특징입니다.

 

백문은 불여일견 코드로 봅시다.

 

SharedPreferneces라는 파일공간을 만듭니다.  getSharedPreferences()메소드로 만드는데,

 

이름을 정할수도있고 (sharedPref), 이름을 지정 안 할수도있습니다.(sharedPref2)

 

이 차이는, 내가 저장공간을 1개만쓰겟다 하면 이름을 지정안해도되고

 

저장공간을 여러개 관리해야겠다 하면 이름을 지정해주는겁니다.

 

SharedPreferences에 데이터를 저장하려면 editor를 선언해야합니다.

 

editor를 선언을했다면, editor. putType() 을 사용해, Key,Value값으로 저장합니다.

editor.commit()으로 sharedPreferences에다가 데이터를 넣어줍니다.

 

 

 

 

 

요렇게 파일을 관리하는 2가지방법을 알아보았는데, 다음 포스팅은 SQLite를 사용하여 

 

실제 DBMS를 다뤄보는 포스팅을 다뤄보겠습니다. 감사합니다

반응형