1. 문자열 바이트 배열 변환 : 문자열을 파일로 저장할 때에는 바이트 배열로 변환한 후 저장해야 하고, 문자열을 바이트 배열로 변환하려면 String 클래스의 getByte() 메소드를 사용해야 한다. byte[] getBytes() 기능 : 바이트 배열로 변환 변환값 : 바이트 배열
2. 바이트 배열의 문자열 변환 : 바이트 배열을 파일로부터 읽은 후 문자열로 번달하려면 String 클래스의 생성자를 사용한다. String(byte[] data) 기능 : String 클래스의 생성자 인수 : data 바이트 배열
String(byte[] data, String encoding) 기능 : String 클래스 생성자 인수 : data 바이트 배열 encoding 인코딩 - 인코딩은 [UTF-8]을 지정.
3. 파일 출력 스트림의 개방 : 스트림의 바이트 배열을 파일로 쓰려면, 파일 출력 스트림을 열고 쓰기 처리를 한 후 마지막으로 닫는다. 파일 출력 스트림을 열려면 Context 클래스의 openFileOutput()메소드를 사용한다. OutputStream openFileOutput(String fileName, int mode)
기능 : 파일의 열기
인수 : fileName 파일명 mode 모드 반환값 : 출력 스트림 : 파일명으로는 저장할 파일명을 지정한다. 절대경로는 /data/data/패키지명/files/파일명 이 된다. 모드는 다음의 정수를 지정한다. 여기서는 Contenxt.MODE_PRIVATE 로 파일 생성을 했다.
모드
기능
Context.MODE_APPEND
기존 파일 단말기로부터 추가 쓰기
Context.MODE_PRIVATE
다른 어플리케이션으로부터는 접근불가
Context.MODE_WORLD_READABLE
다른 어플리케이션으로부터 읽기 가능
Context.MODE_WORLD_WRITEABLE
다른 어플리케이션으로부터 쓰기 가능
4. 바이트 배열의 쓰기 : 바이트 배열을 출력 스트림에 쓰려면 OutputStream 클래스의 write() 메소드를 사용한다. void write(byte[] data, int off, int len) 기능 : 바이트 데이터 data의 off 번째부터 len 만큼 쓰기 인수 : data 바이트 데이터 off 데이터의 시작 위치 len 쓰기 바이트 수 void write(byte[] data)
기능 : 바이트 데이터 data의 모든 데이터 쓰기
인수 : data 바이트 데이터 void write(int data)
기능 : 1 바이트의 바이트 데이터 쓰기
인수 : data 바이트 데이터( 0 ~ 255 )
: 인수는 int 형이지만, 0 ~ 255 값만을 지정한다.
5. 파일 출력 스트림의 닫기 : 파일 출력 스트림을 닫으려면 OutputStream 클래스의 close() 메소드를 사용한다. void close()
기능 : 출력 스트림 닫음
6. 파일 입력 스트림의 개방 : 스트림의 개방 파일로부터 바이트 배열을 읽으려면 파일 입력 스틀미을 열고 읽기 처리를 실행한 후 마지막으로 닫는다. 파일입력 스트림을 열려면 Context 클래스의 openFileInput() 메소드를 사용한다. OutputStream openFileInput(String fileName, int mode)
기능 : 파일 입력 스트림의 열기
인수 : fileName 파일명 mode 모드
7. 바이트 배열의 읽기 : 바이트 배열의 읽기를 실행하려면 InputStream 클래스의 read() 메소드를 사용한다. int read(byte[] data)
기능 : 바이트 배열의 읽기
인수 : data 바이트 배열 반환값 : 읽은 바이트 크기 : 인수로 전달한 바이트 배열에 읽은 데이터가 저장되고, 반환값에는 읽은 바이트 크기가 전달된다. 단, 바이트 배열보다 큰 바이트 데이터는 읽을 수 없다. 거기에서 읽은 바이트크기가 0이 될 때까지 read() 메소드를 반복하여 호출하면서 가변 길이 바이트 배열 ByteArrayOutputStream 클래스에 쓰고 있다.
8. 파일 입력 스트림의 닫기 : 파일 입력 스트림을 닫기 위해서는 Input Stream 클래스의 close() 메소드를 사용한다. void close()
기능 : 파일 입력 스트림의 닫기
9. ByteArrayOutputStream 객체의 바이트 배열화 : ByteArrayOutputStream 객체에서 갖고 있는 바이트 데이터를 byte[] 형의 값으로 얻으려면 ByteArrayOutputStream 클래스의 toByteArray() 메소드를 사용한다. byte[] toByteArray()
기능 : 바이트 배열 구하기 반환값 : 바이트 배열
* DDMS 의 File Explorer : DDMS의 File Explorer 를 사용하면, 저장되어 있는 파일을 확인 할 수 있다. 1. Eclipse 메뉴중 [Window]-[Open Perspective]-[DDMS] 를 선택. 2. Devices 에서 단말기를 선택한다(에뮬레이터의 경우는 emulator-XXXX). 3. File Explorer 에서 [data]-[data]-[패키지명]-[files]-[파일명] 을 선택. 4. 우측 위의 [Pull a file from the device] 버튼을 통해 파일 대화상자를 열고 파일을 컴퓨터에 저장할수 있다. [Put File on Device] 버튼을 통해 컴퓨터로부터 파일을 추가할 수 있고, [삭제] 버튼을 통해 파일 삭제도 가능하다.
public class FileEx extends Activity implements View.OnClickListener{ private EditText editText; private Button btnWrite; private Button btnRead;
// 초기화 @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE);
// 레이아웃 생성 LinearLayout layout = new LinearLayout(this); layout.setBackgroundColor(Color.rgb(255, 255, 255)); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout);
// 텍스트 박스의 생성 editText = new EditText(this); editText.setText("", EditText.BufferType.NORMAL); setLLParams(editText, 240, 50); layout.addView(editText);
// 쓰기 버튼의 생성 btnWrite = new Button(this); btnWrite.setText("쓰 기"); btnWrite.setOnClickListener(this); setLLParams(btnWrite); layout.addView(btnWrite);
// 읽기 버튼의 생성 btnRead = new Button(this); btnRead.setText("읽 기"); btnRead.setOnClickListener(this); setLLParams(btnRead); layout.addView(btnRead); }
// 파일 -> 바이트 데이터 private static byte[] file2data(Context context, String fileName) throws Exception{ int size; byte[] w = new byte[1024]; InputStream in = null; ByteArrayOutputStream out = null;
try {
// 파일 입력 스트림의 개방 (6) in = context.openFileInput(fileName);
// 바이트 배열의 읽기 (7) out = new ByteArrayOutputStream(); while(true){ size = in.read(w); if (size <= 0) break; out.write(w, 0, size); } out.close();
좋은 리더는 책임질 때는 자기 몫 이상을 지고, 공을 세웠을 때는 자기 몫 이상을 다른 사람에게 돌린다. - 아놀드 글래스노 (Arnold Glasnow)
러시아 속담에 ‘성공은 아버지가 많지만 실패는 고아다.’는 말이 있습니다. 보통 사람들은 성공은 자기의 공으로, 실패는 타인에게 돌리는 것이 일반적입니다. 오히려 그렇기 때문에 다른 사람의 마음을 사는 것이 의외로 쉬운 일이 될 수도 있다고 생각합니다. ‘책임은 나에게, 성공의 공은 타인에게’ 돌리는 것이 바로 그것입니다.
자연 속에 있으면 어머니 품에 안겨 있는 것처럼 편안합니다. 세상사 피곤한 사람들이 주말마다 자연을 찾아 전원으로, 숲으로, 시골로 나갑니다. 가는 길이 막혀도 주말이면 자연으로 나가는 사람들. 그곳에서 또 다른 에너지를 얻고 돌아옵니다. 자연이 사람에게 보내는 에너지는 감미롭고 평화롭고 힘이 나는 에너지입니다.
- 이우성의《정말 소중한 것은 한 뼘 곁에 있다》중에서 -
* 이유가 없습니다. 어머니 품이 가장 편안합니다. 모든 시름이 사라지고 편히 잠들 수 있습니다. 자연의 품, 깊은 숲속에 안기면 마음에 평화가 옵니다. 때로는 눈물이 나고 모든 것이 녹아내립니다. 숨어 있던 힘이 절로 납니다.