본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

DataInputStream 8가지 기본 자료형의 단위로 읽다

DataInputStream DataOutputStream

FilterInputStream FilterOutputStream의 자손

DataInputStream DataOutputStream는 DataInput DataOutput인터페이스를 각각구현했기때문에

byte단위가 아닌 8가지 기본 자료형의 단위로 읽고 쓸 수 있다.

 

 


DataInputStream(InputStream in): 주어진 입력 스트림에서 데이터를 읽기 위한 DataInputStream 객체를 생성한다.


boolean readBoolean(): 입력 스트림에서 1바이트를 읽고 이를 boolean 값으로 변환하여 반환한다.
byte readByte(): 입력 스트림에서 부호 있는 8비트 값을 읽어서 byte로 반환한다.
char readChar(): 입력 스트림에서 2바이트를 읽고 이를 char 값으로 변환하여 반환한다.
short readShort(): 입력 스트림에서 부호 있는 16비트 값을 읽어서 short로 반환한다.
int readInt(): 입력 스트림에서 부호 있는 32비트 값을 읽어서 int로 반환한다.
long readLong(): 입력 스트림에서 부호 있는 64비트 값을 읽어서 long으로 반환한다.
float readFloat(): 입력 스트림에서 부동 소수점 값인 32비트를 읽어서 float으로 반환한다.
double readDouble(): 입력 스트림에서 부동 소수점 값인 64비트를 읽어서 double로 반환한다.
int readUnsignedByte(): 입력 스트림에서 부호 없는 8비트 값을 읽어서 int로 반환한다.
int readUnsignedShort(): 입력 스트림에서 부호 없는 16비트 값을 읽어서 int로 반환한다.


void readFully(byte[] b): 입력 스트림에서 주어진 바이트 배열에 데이터를 읽어서 채웁니다.
void readFully(byte[] b, int off, int len): 입력 스트림에서 주어진 길이만큼 데이터를 읽어서 주어진 오프셋부터 바이트 배열에 채웁니다.


String readUTF(): UTF-8 형식으로 인코딩된 문자열을 읽어서 반환한다.
static String readUTF(DataInput in): 주어진 입력 스트림에서 UTF-8 형식으로 인코딩된 문자열을 읽어서 반환한다.
int skipBytes(int n): 입력 스트림에서 n바이트를 건너뛰고 실제로 건너뛴 바이트 수를 반환한다.

 

 

 

 

예시로 확인해보기앞서 사용될 파일은 아래와같다고 생각하고 시작하자.

더보기

true
123
A
4567
123456789
9876543210
123.45
678.90
255
65535
HelloWorld
안녕하세요!

import java.io.*;

public class DataInputStreamExample {
    public static void main(String[] args) {
        try {
            // 파일에서 데이터를 읽기 위한 DataInputStream 객체 생성
            InputStream inputStream = new FileInputStream("data.bin");
            DataInputStream dataInputStream = new DataInputStream(inputStream);

            // boolean 값 읽기
            boolean booleanValue = dataInputStream.readBoolean();
            System.out.println("Boolean Value: " + booleanValue);

            // byte 값 읽기
            byte byteValue = dataInputStream.readByte();
            System.out.println("Byte Value: " + byteValue);

            // char 값 읽기
            char charValue = dataInputStream.readChar();
            System.out.println("Char Value: " + charValue);

            // short 값 읽기
            short shortValue = dataInputStream.readShort();
            System.out.println("Short Value: " + shortValue);

            // int 값 읽기
            int intValue = dataInputStream.readInt();
            System.out.println("Int Value: " + intValue);

            // long 값 읽기
            long longValue = dataInputStream.readLong();
            System.out.println("Long Value: " + longValue);

            // float 값 읽기
            float floatValue = dataInputStream.readFloat();
            System.out.println("Float Value: " + floatValue);

            // double 값 읽기
            double doubleValue = dataInputStream.readDouble();
            System.out.println("Double Value: " + doubleValue);

            // 부호 없는 byte 값 읽기
            int unsignedByteValue = dataInputStream.readUnsignedByte();
            System.out.println("Unsigned Byte Value: " + unsignedByteValue);

            // 부호 없는 short 값 읽기
            int unsignedShortValue = dataInputStream.readUnsignedShort();
            System.out.println("Unsigned Short Value: " + unsignedShortValue);

            // 바이트 배열 읽기
            byte[] byteArray = new byte[10];
            dataInputStream.readFully(byteArray);
            System.out.println("Byte Array: " + new String(byteArray));

            // 바이트 배열 중 일부 읽기
            byte[] partialByteArray = new byte[5];
            dataInputStream.readFully(partialByteArray, 0, 5);
            System.out.println("Partial Byte Array: " + new String(partialByteArray));

            // UTF-8 문자열 읽기
            String stringValue = dataInputStream.readUTF();
            System.out.println("UTF String: " + stringValue);

            // 스트림에서 지정된 바이트 수만큼 건너뛰기
            int skippedBytes = dataInputStream.skipBytes(10);
            System.out.println("Skipped Bytes: " + skippedBytes);

            // 스트림 닫기
            dataInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
[출력결과]
Boolean Value: true
Byte Value: 123
Char Value: A
Short Value: 4567
Int Value: 123456789
Long Value: 9876543210
Float Value: 123.45
Double Value: 678.90
Unsigned Byte Value: 255
Unsigned Short Value: 65535
Byte Array: HelloWorld
Partial Byte Array: Hello
UTF String: 안녕하세요!
Skipped Bytes: 10