FileWriter ->문자단위
FileOutputStream ->바이트 단위
package practice0411;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
class Studentone implements Serializable { // 직렬화 시켜줌
private static final long serialVersionUID = 1; // 이 객체에 대한 시리얼번호
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Studentone [name=" + name + ", age=" + age + "]";
}
}
public class file {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
File f = new File("objs");
FileOutputStream fos = null; // 자바에서 파일에 데이터를 출력하는 클래스
ObjectOutputStream oos = null; // 직렬화 하여 객체를 바이트 단위로 변환하여 파일에 쓰기 위해 사용
// 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는
// 기술.
FileInputStream fis = null; // 파일로부터 데이터를 읽어오는 클래스
ObjectInputStream ois = null; // 파일로부터 바이트 단위로 읽어온 데이터를 객체로 역직렬화하여 사용
// byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술을 역직렬화(Deserialize)라고 부릅니다.
Studentone s = new Studentone();
s.setName("홍길동");
s.setAge(33);
ArrayList<Studentone> ar = new ArrayList<>();
ar.add(s);
try {
fos = new FileOutputStream(f); // 스트림만들고
oos = new ObjectOutputStream(fos); // 객체를 실어보냄
oos.writeObject(ar);
oos.close();
// FileOutputStream fos = new FileOutputStream("object.ser"); // object.ser 파일에
// 객체를 출력하기 위한 FileOutputStream 객체 생성
// ObjectOutputStream oos = new ObjectOutputStream(fos); // FileOutputStream 객체를
// 이용하여 ObjectOutputStream 객체 생성
// MyObject obj = new MyObject(); // 직렬화할 객체 생성
// oos.writeObject(obj); // 객체를 파일에 씀
// oos.close(); // 객체 출력 스트림을 닫음
} catch (IOException e) {
e.printStackTrace();
}
try {
fis = new FileInputStream("objs");
ois = new ObjectInputStream(fis); //2번방법
// List<Studentone> lar = (List<Studentone>)ois.readObject(); //list가 arraylist의 부모
// for (int i = 0; i < lar.size(); i++) { //ex)List list = new ArrayList();
// System.out.println(lar.get(i)); //-> 도형 list = new 정사각형();
// }
for (int i = 0; i < ar.size(); i++) {
System.out.println(ar.get(i));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("무조건 실행되는것");
}
}
}
'수업시간 JAVA > 이론' 카테고리의 다른 글
자바로 데이터베이스 연결 후 Statement로 (실제로 해킹위험있어서 안쓴다)->SELECT / INSERT/UPDATE/DELETE (0) | 2023.04.12 |
---|---|
lombok /@Data/AllArgsConstructor/NoArgsConstructor (0) | 2023.04.12 |
Filewriter/ FileReader ->문자단위일 경우 (0) | 2023.04.10 |
Interface (0) | 2023.04.09 |
상속 (0) | 2023.04.08 |