기존의 파일 입출력에서는 바이트나 문자의 형식을 파일에서 읽어들이거나 쓸 수 있었는데, 자바 내에서 문자열 이지만 숫자로 표현하는 경우 반드시 형 변환을 해서 사용을 해야 하는 단점이 있다.
이러한 단점을 해결한 클래스가 DataInputStream , DataOutputStream 이다.
이 두개의 클래스는 바이트를 문자로 변환하고 primitive type 의 자료형을 읽고 쓸 수 있다.
주의해야 할 것은 문자열을 쓰거나 읽을 때 readLine() 이 아닌 readUTF() 이다.
[ DataInputStream ]
더보기
FileInputStream fis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream("data.dat");
dis = new DataInputStream(fis);
/*
* 반드시 write한 순서대로 읽어야 함-
*/
int count = 1;
//available() = 읽지 않은 바이트 수를 리턴
while (dis.available() >= 0) {
System.out.println("===========" + count + "===========");
int n = dis.readInt();
double d = dis.readDouble();
boolean b = dis.readBoolean();
String str = dis.readUTF();
String str2 = dis.readUTF();
count++;
System.out.println(n);
System.out.println(d);
System.out.println(b);
System.out.println(str);
System.out.println(str2);
}
} catch (Exception e) {
} finally {
MyUtils.closeAll(dis, fis);
}
[ DataOutputStream ]
더보기
FileOutputStream fos = null;
DataOutputStream dos = null;
try {
fos = new FileOutputStream("data.dat");
dos = new DataOutputStream(fos);
Random r = new Random();
int num = r.nextInt(50) + 3;
for (int i = 0; i < num; i++) {
dos.writeInt(3);
dos.writeDouble(3.14);
dos.writeBoolean(false);
// 문자열 쓰기
dos.writeUTF("abc");
dos.writeUTF("한글\nㅋㅋㅋ");
}
dos.flush();
System.out.println(num);
} catch (IOException e) {
} finally {
MyUtils.closeAll(dos, fos);
}
'자바프로그래밍' 카테고리의 다른 글
파일 입출력(IO패키지) (0) | 2020.05.28 |
---|---|
[JAVA] 예외처리 (0) | 2020.04.29 |
[JAVA] 로또 프로그램(컬렉션 사용) (0) | 2020.04.26 |
List (0) | 2020.04.23 |
컬렉션 (0) | 2020.04.23 |