5-2.(3) java file io (DataInputStream, DataOutputStream)

zhyun·2020년 9월 28일
0

HighJava

목록 보기
44/67

바이트스트림 : DataInputStream/ DataOutputStream

  • DataInputStream/ DataOutputStream FilterInputStream/FilterOutputStream을 상속하고 있어서 객체 생성시에 InputStream/OutputStream을 매개변수로 인자로 가짐

FileReader, FileWriter, FileInputStream, FileOutputStream

  • 직접적으로 파일을 읽고 쓰는 클래스
  • 이 클래스들은 '문자'나 '바이트'형식의 문자만 입출력 가능
  • DataStream Filter를 적용함으로써 자바 기본 자료형 (char,int,long,...)
    데이터 입출력 가능

"DataInputStream" "DataOutputStream"

  • 즉, 프리미티브 타입의 데이터를 읽고 쓰기 가능
  • 스스로 파일에 읽고 쓸수는 없어서 FileInputStream, FileOutputStream 활용해야댐

write메서드 종류


: "write"로 시작되는 메서드로 데이터를 파일에 읽고 쓰기 가능

  • writeShort(int v)
    • 매개변수 v의 마지막 2byte만 파일에 쓰는 메서드
  • writeByte(int v)
    • 매개변수 v의 마지막 1byte만 파일에 쓰는 메서드
  • writeBoolean(Boolean v)
    • 매개변수 Boolean값을 파일에 쓰는 메서드
  • writeInt(int v)
    • 매개변수 v의 마지막 4byte만 파일에 쓰는 메서드
  • writeChar(int v)
    • 매개변수 v의 마지막 2byte만 파일에 쓰는 메서드
  • writeDouble(double v)
    • 매개변수 Double값을 파일에 쓰는 메서드
  • writeFloat(Float v)
    • 매개변수 Float값을 파일에 쓰는 메서드
  • writeLong(long v)
    • 매개변수 Long값을 파일에 쓰는 메서드

read메서드 종류

  • readLong(), readDouble()
    • 8바이트를 파일로부터 읽어옴
  • readUnsignedShort()
    • 부호 없는 2바이트를 파일로부터 읽어옴
  • readByte()
    • 1byte를 파일로부터 읽어옴
  • readShort()
    • 2byte를 파일로부터 읽어옴
  • readInt()
    • 4byte를 파일로부터 읽어옴
  • readBoolean()
    • 1바이트를 읽어서 0이면 false, 아니면 true를 전달
  • readChar()
    • 2바이트를 파일로부터 읽어옴
  • readFloat()
    • 4바이트를 파일로부터 읽어옴
  • readUnsignedByte()
    • 부호 없는 1바이트를 파일로부터 읽어옴
  • readUTF()
    • UTF방식 읽어옴

기본타입 입출력 보조 스트림 예시

T13_DataIOStreamTest

  • 데이터타입 : 8가지 (byte별)
  • "StreamFile.out"
    : 파일에 각 기본형 데이터 출력
  • DataOutputStream 객체 선언
    : DataOutputStream 클래스는 스스로 파일과 연동할 수 없기 때문에
    FileOutputStream을 매개변수로 받아서 사용
  • 출력 => fileoutputstream, dataoutputstream
  • 읽기 => fileinputstream, datainputstream
  • OutputStream 출력한 순서대로 타입 맞춰서 읽어야 한다!!!
public class T13_DataIOStreamTest {
	public static void main(String[] args) {
		FileInputStream fis = null;
		DataInputStream dis = null;
		
		FileOutputStream fos = null;
		DataOutputStream dos = null;
		
		try {
			//"d:/D_Other/test.dat" 파일을 출력하는 객체를 생성
//			fos = new FileOutputStream("d:/D_Other/test.dat");
			//"StreamFile.out" 파일에 각 기본형 데이터를 출력한다
			fos = new FileOutputStream("StreamFile.out");
			
			//DataOutputStream Filter를 적용
			//DataOutputStream은 출력용 데이터를 자료형에 맞게 출력해 준다.
			dos = new DataOutputStream(fos);
			
			dos.writeUTF("홍길동"); // 문자열 데이터 출력(UTF-8)
			dos.writeInt(17);     // 정수형으로 데이터 출력
			dos.writeFloat(3.14f);// 실수형(Float)으로 출력
			dos.writeDouble(3.14);// 실수형(Float)으로 출력
			dos.writeBoolean(true);//논리형으로 출력
			System.out.println("출력 완료...");
			
			dos.close();//종료
			//================================================================
			//출력한 자료 읽어오기
			
//			FileInputStream fis = new FileInputStream("d:/D_Other/test.dat");
			fis = new FileInputStream("StreamFile.out");
			dis = new DataInputStream(fis);
			
			//(OutputStream)저장된 순서대로 읽어야한다
			System.out.println("문자열 자료 : "+ dis.readUTF());
			System.out.println("정수형 자료 : "+ dis.readInt());
			System.out.println("실수형(Float) 자료 : "+ dis.readFloat());
			System.out.println("실수형(Double) 자료 : "+ dis.readDouble());
			System.out.println("논리형 자료 : "+ dis.readBoolean());
			
			dis.close();//종료
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}


profile
HI :)

0개의 댓글