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
'JAVA' 카테고리의 다른 글
SequenceInputStream 두 개의 입력 스트림을 연결하다 (0) | 2024.03.21 |
---|---|
DataOutputStream 8가지 기본 자료형의 단위로 쓰다 (0) | 2024.03.21 |
BufferedInputStream BufferedOutputStream 스트림의 입출력 효율을 높이는 보조스트림 (0) | 2024.03.20 |
FilterInputStream FilterOutputStream 데이터를 필터링하거나 변환하다: 압축, 암호화 (0) | 2024.03.20 |
바이트기반 파일입출력 스트림 FileInputStream FileOutputStream, String File boolean FileDescriptor (0) | 2024.03.20 |