DataInputStream 과 DataOutputStream
DataInputStream 과 DataOutputStream은 자바의 I/O 스트림 클래스 중 하나로, 원시 자료형(정수, 실수, 문자 등)을 쉽게 읽고 쓸 수 있도록 도와준다.
이 두 클래스는 데이터의 형식을 유지하면서 입력 및 출력을 수행할 수 있어, 자료의 손실 없이 데이터를 주고받을 수 있다.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class MyDataStream {
public static void main(String[] args) {
// 데이터 쓰기 - 바이트, 문자 기반이 아닌 기본 자료형 데이터 타입으로 보내기
// 파일에 사용 --> FileOutputStream("대상파일이름") <-- 확장 (보조스트림)
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("student.txt"))) {
dos.writeInt(101); // 학번
dos.writeUTF("홍길동"); // 이름
dos.writeDouble(3.5); // 학점
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(">>> 데이터 쓰기 완료 (원시타입) <<< ");
// 기본 데이터 타입으로 데이터 읽기
try (DataInputStream dis = new DataInputStream(new FileInputStream("student.txt"))) {
int id = dis.readInt();
String name = dis.readUTF();
double score = dis.readDouble();
System.out.println("학번 : " + id);
System.out.println("이름 : " + name);
System.out.println("학점 : " + score);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(">>> 데이터 읽기 완료 (기본 데이터 타입) <<<");
}// end of main
}
실행 결과______
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class MyObjectStream {
public static void main(String[] args) {
// 객체 직렬화
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.txt"))) {
Person person = new Person("손흥민", 30);
oos.writeObject(person);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("-------------------");
// 객체 역직렬화
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.txt"))) {
// 문자 기반 데이터를 읽으면 <-- 스트림 값 추출해서 코드상에 활용할 수 있도록 Object
// 만드는 코딩을 해야 한다. name; 10 <--
Person person = (Person) ois.readObject();
System.out.println(person);
} catch (Exception e) {
e.printStackTrace(); // 예외 처리 흐름 생성 가능
}
}
}
실행 결과_____
------------------------------------------
▶ txt 파일
'JAVA' 카테고리의 다른 글
[JAVA] 1:1 단방향 통신 (서버측) (0) | 2024.05.24 |
---|---|
[JAVA] Socket 이란? (0) | 2024.05.23 |
[JAVA] 사용자모드와 커널모드 (0) | 2024.05.22 |
[JAVA] 로그와 파일 저장 (0) | 2024.05.21 |
[JAVA] 파일복사(문자기반 입/출력), ZIP파일로 압축 (0) | 2024.05.21 |