자바 입출력 스트림과 파일

자바 입출력 스트림과 파일

QA

자바 입출력 스트림과 파일

답변 1

본문

 

  • 방식1: ArrayList 컬렉션 객체에 저장된 개별 객체 정보를 텍스트 파일(filename)에 저장하고, 파일에 저장된 정보를 읽어와서 ArrayList 컬렉션 객체를 재구성하여 반환함
    • public static void saveDataToFile(ArrayList students, String fileName)
    • public static ArrayList loadDataFromFile(String fileName)
  • 방식2: ObjectOutputStream 객체를 이용하여 ArrayList 객체를 파일(fileName)에 저장하고, ObjectInputStream 객체를 이용하여 파일에 저장된 ArrayList 객체를 읽어옴
    • public static void saveObjectToFile(ArrayList students, String fileName)
    • public static ArrayList loadObjectFromFile(String fileName)


package hw12;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class 실습12 {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<Student>();
        students.add(new UnderGraduate("100","Lee","사물인터넷",21,"테니스"));
        students.add(new UnderGraduate("101","Kim","지능시스템",21,"요가"));
        students.add(new UnderGraduate("102","Park","사이버보안",24,"댄스"));
        students.add(new UnderGraduate("103","Kim","ICT융합엔터테인먼트",21,"야구"));
        students.add(new Graduate("G100","Jung","정보시스템",26,"석사","인공지능"));
        students.add(new Graduate("G101","Lee","정보시스템",26,"석사","보안"));
        students.add(new Graduate("G200","Han","정보컴퓨터공학",28,"박사","임베디드시스템"));
        saveDataToFile(students, "output.dat");
        System.out.println(loadDataFromFile("output.txt"));
        saveObjectToFile(students, "output.dat");
        System.out.println(loadObjectFromFile("output.dat"));
    }
    public static void saveDataToFile(ArrayList<Student> students, String fileName)  {
     
    }
    public static ArrayList<Student> loadDataFromFile(String fileName) {
     
   
     return null;
    }
    public static void saveObjectToFile(ArrayList<Student> students, String fileName) {
     FileOutputStream fos = null;
  ObjectOutputStream oos = null;
  try {
   fos = new FileOutputStream("object.dat");
  } catch (FileNotFoundException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  try {
   oos = new ObjectOutputStream(fos);
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
try{
   
   // object.dat 파일의 객체 아웃풋스트림을 생성한다.
   fos = new FileOutputStream("object.dat");
   oos = new ObjectOutputStream(fos);
   
   // 해당 파일에 3개의 객체를 순차적으로 쓴다
   oos.writeObject(students);
   
   
   // object.dat 파일에 3개의 객체 쓰기 완료.
   System.out.println("객체를 저장했습니다.");
  
  }catch(Exception e){
   
   e.printStackTrace();
  
  }finally{
   
   // 스트림을 닫아준다.
   if(fos != null) try{fos.close();}catch(IOException e){}
   if(oos != null) try{oos.close();}catch(IOException e){} 
  }
 
    }
    public static ArrayList<Student> loadObjectFromFile(String fileName) {
     FileInputStream fis = null;
  ObjectInputStream ois = null;

try{
   
   // object.dat 파일로 부터 객체를 읽어오는 스트림을 생성한다.
   fis = new FileInputStream("object.dat");
   ois = new ObjectInputStream(fis);
   
   // ObjectInputStream으로 부터 객체 하나씩 읽어서 출력한다.
   // (UserClass) 로 형변환을 작성해야 한다.
   // System.out.println 으로 객체의 구현된 toString() 함수를 호출한다.

  }catch(Exception e){
   e.printStackTrace();
  }finally{
   
   // 스트림을 닫아준다.
   if(fis != null) try{fis.close();}catch(IOException e){}
   if(ois != null) try{ois.close();}catch(IOException e){}
  }
return null;
      
    }
}

class Student{
 
 String id;
 String name;
 String dept;
 int age;
 public Student(String id, String name, String dept, int age) {
  super();
  this.id = id;
  this.name = name;
  this.dept = dept;
  this.age = age;
 }
 
 
}
class UnderGraduate extends Student{
 public UnderGraduate(String id, String name, String dept, int age, String circle) {
  super(id, name, dept, age);
  this.circles = circles;
  
 }

String circles;
public String toString() {
 
 return String.format("%s %s %s %d %s", id, name, dept, age, circles);
 
}
}

class Graduate extends Student{
  
String degree;
String major;
public Graduate(String id, String name, String dept, int age, String degree, String major) {
 super(id, name, dept, age);
 this.degree = degree;
 this.major = major;
}
public String toString() {
 return String.format("%s %s %s %d %s %s", id, name, dept, age, degree, major);
}
}

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
전체 3
© SIRSOFT
현재 페이지 제일 처음으로