DataInputStream, DataOutputStream

import java.io.*;
class DataInOutStream 
{
	public static void main(String[] args) throws Exception
	{
		String sourcefile="test.txt";
		String targetfile="test.txt";

		//DataOutputStream : 필터스트림
		// 자바의 다양한 자료형(Data Type)들은 바이트 단위로 분해하여 쓰기 작업을 한다.
		// DataInputStream과 짝을 이뤄 사용한다.
		//1. 파일 sourcefile과 노드 연결 스트림 생성
		FileOutputStream fos = new FileOutputStream(targetfile);
		// test.txt에 쓰기
		//2.필터링: DataOutputStream과 연결
		DataOutputStream dos = new DataOutputStream(fos);
		//3.자바의 다양한 자료형의 데이터를 써보자.
		byte b=2;
		byte [] arr={65,66,67};
		boolean bool=true;
		char ch ='가';
		String str="홍길동";//9바이트+2바이트
		dos.write(b);
		dos.write(arr,0,arr.length);
		dos.writeBoolean(bool);
		dos.writeChar(ch);
		dos.writeUTF(str);
		//유니코드의 utf-8형식으로 문자열을 출력하는 메소드
		//utf형식은 각 문자의 표현을 위해 한바이트 사용하는지,
		//두바이트 또는 세바이트 차지하는지 알아내어 
		// ACII문자는 1바이트로, 그리스어, 히브리어, 아랍어 등의 
		// 문자는 2바이트로, 그외의 문자는 3바이트로 표현된다.
		System.out.println("총:" +dos.size()+"바이트 썼음");
		dos.flush();
		dos.close();

		DataInputStream dis = new DataInputStream(new FileInputStream(sourcefile));
		//test.txt 읽기
		System.out.println("읽어 올 수 있는 바이트 수:"+dis.available());
		byte b2 = dis.readByte();
		System.out.println(b2);
		int n = dis.read(arr,0,arr.length);
		//n: 바이트수
		for (byte bt: arr)
			System.out.println((char)bt);
		boolean res=dis.readBoolean();
		System.out.println(res);

		char ch2=dis.readChar();
		System.out.println(ch2);
		String str2=dis.readUTF();
		System.out.println(str2);
		dis.close();
	}
}


'Java > I_O' 카테고리의 다른 글

File class(dir 출력)  (0) 2011.12.10
File class  (0) 2011.12.10
File Input/Output Stream  (0) 2011.12.09
File Input Stream  (0) 2011.12.09
InputStream과 OutputStream  (0) 2011.11.30