- DataInputStream, DataOutputStream 사용 => 메모리에 저장된 0,1 상태를 그대로 읽거나 쓸 때 사용 => 자료형의 크기가 그대로 보존됨
- 자바의 기본데이터타입 8가지 + 문자형(String) 타입 처리 가능 => readXXX(), writeXXX() 메서드를 사용하며 XXX은 기본 데이터타입의 이름 사용 ex) int형 데이터 출력시 : writeInt() double형 데이터 출력시 : readDouble() => 주의! String 타입은 XXX 부분에 String 대신 UTF 사용 ex) readString() 메서드(X) -> readUTF() 메서드(O)
주의 사항
- 반드시 두 객체끼리만 데이터 입출력 가능
- 입출력 시 각각의 순서에 따라 처리해야함 ex) int, char, String 순으로 출력시 int, char, String 순으로 입력해야함
기본 문법
- 기본 데이터 출력 DataOutputStream dos = new DataOutputStream(바이트 스트림 객체); dos.writeXXX(데이터);
- 기본 데이터 입력 DataInputStream dis = new DataInputStream(바이트 스트림 객체); dis.readXXX(데이터);
자바 기본데이터를 파일로 출력하기
// 1. FileOutputStream 객체를 생성하여 출력할 파일 위치 및 파일명 지정
// FileOutputStream fos = new FileOutputStream("C://temp/data5.txt");
//2. DataOutputStream 객체를 생성하여 FileOutputStream 객체를 전달
// DataOutputStream dos = new DataOutputStream(fos);
위 코드를 사용해서 파일을 출력해보자
try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("C://temp/data5.txt"))) {
//DataOutputStream 객체를 통해 출력되는 데이터는 C://temp//data5.txt 파일에 출려됨(기록됨)
//=> dos.writeXXX() 메서드를 호출하여 기본 데이터 출력
dos.writeInt(100); // 정수형 출력
dos.writeDouble(3.14); // 실수형 출력
dos.writeUTF("땅콩"); // 문자열 출력(주의! writeString() 메서드가 아님)
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
실행해보니,
데이터가 바로 보이지 않음.
윈도우 운영체제에서 메모장을 바로 열면 내용이 안나옴
해결방법 → → → → → → → DataInputStream 사용!!
파일에 출력된 자바 기본데이터를 읽어와서 화면에 출력하기
- 읽어들일 데이터는 반드시 출력된 데이터 순으로 읽어야한다!
- 출력순서 : int -> double -> String이므로, 입력순서도 동일해야함
- 순서가 바뀔 경우 EOException 예외가 발생하므로 주의!
try(DataInputStream dis = new DataInputStream(new FileInputStream("C://temp/data5.txt"))) {
//dis.readXXX() 메서드를 호출하여 데이터 읽어오기(입력)
// 읽어들일 데이터는 반드시 출력된 데이터 순으로 읽어야한다!
// => 출력순서 : int -> double -> String이므로, 입력순서도 동일해야함
// => 순서가 바뀔 경우 EOException 예외가 발생하므로 주의!ㄴ
int num = dis.readInt();
double dNum = dis.readDouble();
String str = dis.readUTF();
// 입력받은 데이터 출력
System.out.println("int형 정수: "+num);
System.out.println("double형 실수: "+dNum);
System.out.println("문자열: "+str);
} catch (FileNotFoundException e) {
// 읽어들일 파일이 존재하지 않거나 경로가 틀린경우 예외 발생!
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
만약 data5.txt 파일이 없었다면 FileNotFoundException 예외가 발생한다.
콘솔결과:
int형 정수: 100 double형 실수: 3.14 문자열: 땅콩
'JAVA' 카테고리의 다른 글
[JAVA] 키보드로부터 입력받은 데이터를 파일에 출력 (1) | 2023.12.07 |
---|---|
[JAVA] 객체 직렬화(Serialization) || 역직렬화(Deserialization) (0) | 2023.12.07 |
[JAVA] 자바 I/O - 모니터로부터 데이터를 출력하는 방법 2가지 (0) | 2023.12.07 |
[JAVA] 자바 I/O - 키보드로부터 데이터를 입력받아 처리하는 방법 5가지 (1) | 2023.12.05 |
[JAVA] 쓰레드를 일시 정지 상태로 만드는 방법 (1) | 2023.11.28 |