FileInputStream fis = new FileInputStream("c:/BufferedOutputStreamDemo.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
//버퍼를 사용하여 파일을 입력하기 위한 객체 fis 생성
System.out.println("버퍼를 사용하여 파일로부터 입력하여 콘솔에 출력");
int i;
while((i = bis.read()) != -1) {
System.out.println(i);
}
bis.close();
}
}
7. DataOutputStream 클래스와 DataInputStream 클래스 자바 기본 자료형 데이터를 바이트 스트림으로 출력하여 파일로 저장하고, 파일의 바이트 스트림을 입력받아 자바의 기본 자료형 데이터를 화면에 출력하는 프로그램이다. 두개의 프로그램은 기본 자료형 데이터를 출력한 순서와 파일로부터 기본 자료형 데이터를 읽어들이는 순서가 같아야 정확한 결과를 출력한다.
FileInputStream fis = new FileInputStream("c:/DataOutputStreamDemo.txt");
DataInputStream dis = new DataInputStream(fis);
//바이트 스트림으로 부터 자바의 기본 자료형 데이터를
//읽기 위한 dis 객체 생성
System.out.println("파일 읽기");
System.out.println(dis.readBoolean());
System.out.println(dis.readByte());
System.out.println(dis.readChar());
System.out.println(dis.readDouble());
System.out.println(dis.readFloat());
System.out.println(dis.readInt());
System.out.println(dis.readLong());
System.out.println(dis.readShort());
fis.close();
}
}
8. ObjectOutputStream 클래스와 ObjectInputStream 클래스 Data객체를 생성하여 직렬화된 데이터로 파일에 저장하는 프로그램이다. 객체를 직렬화된 데이터로 파일에 저장하기 위해 FileOutputStream 클래스와 ObjectOutputStream 클래스를 이용하였다. 직렬화된 데이터 파일은 확장자가 항상 *.ser 이어야 한다. 이 프로그램은 현재 날짜를 가진 Data 객체를 s_data.ser 파일에 직렬화된 데이터로 저장한다.
·미리보기 | 소스복사·
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;
publicclass ObjectPersistenceWrite {
Date s_date;
ObjectOutputStream objectout;
public ObjectPersistenceWrite() {
s_date = new Date(); //생성자에서 날짜 객체를 생성
objectout = null;
}
publicvoid write(String f_name) {
try {
FileOutputStream f_out = new FileOutputStream(f_name);
//파일에 저장하기 위해 파일 출력 스트림 객체 생성
objectout = new ObjectOutputStream(f_out);
//객체를 파일에 출력하기 위한 스트림 객체 생성
System.out.println("직렬화된 데이터로 저장된 Date 객체 : " + s_date);
objectout.writeObject(s_date);
//writeObject() 메소드를 이용하여 Date 객체를 직렬화된 데이터로 파일에 저장
objectout.close();
}catch(IOException e) {
e.printStackTrace();
}
}
publicstaticvoid main(String args[]) {
ObjectPersistenceWrite od = new ObjectPersistenceWrite();
od.write("c:/s_data.ser");
//s_data.ser 파일에 저장. 직렬화된 파일은 확장자가 항상 *.ser 이어야 한다.
System.out.println("파일 저장 완료");
}
}
·미리보기 | 소스복사·
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;
publicclass ObjectPersistenceRead {
Date s_date;
Date new_date;
ObjectInputStream objectin;
public ObjectPersistenceRead() {
new_date = new Date();
objectin = null;
}
publicvoid read(String f_name) {
try {
FileInputStream f_in = new FileInputStream(f_name);
objectin = new ObjectInputStream(f_in);
//직렬화된 데이터 파일로부터 데이터를 읽기 위한 스트림 객체 생성
s_date = (Date)objectin.readObject();
//객체를 읽어 Date 타입으로 형 변환
System.out.println("직렬화된 데이터로부터 읽은 Date 객체 : " + s_date);
System.out.println("현재 시점에서 생성된 Date 객체 : " + new_date);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException nfe) {
nfe.printStackTrace();
}
}
publicstaticvoid main(String args[]) {
ObjectPersistenceRead id = new ObjectPersistenceRead();
id.read("c:/s_data.ser");
//직렬화된 파일로부터 읽는다.
}
}
9. StreamTokenizer 클래스 token.txt 파일에 저장된 데이터를 읽어들여 토큰으로 분리하는 프로그램이다. 이 프로그램은 영문 소문자 a부터 z까지를 공백으로 취급하고 있다.