[자바/안드로이드] DataInputStream DataOutputStream알아보기

Posted by 앱해피
2015. 6. 22. 01:38 자바(JAVA)

 

 

 

 

DataInputStream / DataOutputStream

 

DataOutputStream

 

DataOutputStream은 자바의 기본 데이터 타입별로 출력하는 별도의 메소드들이 있으며,

기본 데이터를 매개 변수로 호출한다.

 

예를 들어, double 데이터를 출력하려면 writeDouble(double v), char 데이터를 출력하려면 writeChar(int v)를 이용한다. 문자열을 출력할 때는 writeUTF(String str)을 사용한다.

 

DataOutputStream을 이용해서 "C:\Users\han\Desktop\test.txt" 파일에 여러 가지 자바 기본 타입별로 데이터를 기록하는 예제를 살펴 본 뒤, DataInputStream을 이용해서 나중에 읽어들이는 예제를 만들어 보도록 하겠다.

import java.io.*; public class DataOutputStreamEx { public static void main(String[] args){ FileOutputStream f = null; DataOutputStream out = null; try { f = new FileOutputStream("C:\\Users\\han\\Desktop\\test.txt"); out = new DataOutputStream(f); out.writeBoolean(false); // 0x00 출력 out.writeByte(0x33); // 0x33 출력 out.writeShort(0x1234); // 0x1234 출력 out.writeInt(0x5678); // 0x00005678 출력 out.writeLong(0x12abcdef); // 0x0000000012abcdef 출력 out.writeChar('c'); // 0x0063 출력 out.writeDouble(0.12e-3); // long으로 변환 후 0x3f1f75104d551d69 출력 out.writeFloat((float) 3.14); // int로 변환 후 0x4048f5c3 출력 out.writeUTF("가나다라"); // UTF-8로 인코딩 후 0x000ceab080eb8298eb8ba4eb9dbc 출력 out.close(); f.close(); } catch (IOException e) { System.out.println("입출력 오류"); } } }

 

 

 

 

DataInputStream 

 

이전에 DataOutputStream을 이용해서 test.txt파일에 바이너리 형태로 입력했던 자바 기본 데이터

타입 데이터를 DataInputStream을 이용해서 다시 읽어올 수 있다.

 

예를 들어, double 데이터를 읽으려면 readDouble(), char 데이터를 읽을 때는 readChar()를 이용한다. 문자열을 읽을 때는 readUTF()을 사용한다.

 

public class ReadData {
	public static void main(String[] args){
		FileInputStream f = null;
		DataInputStream in = null;
		try 
        {
			f = new FileInputStream("C:\\Users\\han\\Desktop\\test.txt");  
			in = new DataInputStream(f); // 파일에 연결된 데이터 입력 스트림 생성
			System.out.println(in.readBoolean()); // 1바이트 읽어 boolean값 반환
			System.out.printf("%x\n",(byte)in.readByte()); // 1바이트 읽어 byte값 반환
			System.out.printf("%x\n",in.readShort()); // 2바이트 읽어 short값 반환
			System.out.printf("%x\n",in.readInt()); // 4바이트 읽어 int값 반환
			System.out.printf("%x\n",in.readLong()); // 8바이트 읽어 long값 반환
			System.out.println((char)in.readChar()); // 2바이트 읽어 char값 반환
			System.out.println(in.readDouble()); // 8바이트 읽어 double값 반환
			System.out.println(in.readFloat()); // 4바이트 읽어 float값 반환
			System.out.println(in.readUTF()); // UTF-8로 인코딩된 문자열 읽어 반환
			in.close();
			f.close();
		} 
        catch (IOException e) 
        {
			System.out.println("입출력 오류");
		}
	}
}