1. 프로그램 --> 파일(출력)

public void fileSave() {
	
		Phone[] arr = new Phone[3];
		arr[0] = new Phone("갤럭시",1200000);
		arr[1] = new Phone("아이폰",1300000);
		arr[2] = new Phone("플립",1500000);
		
		try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e_phones.txt"))){
			for(int i=0;i <arr.length;i++) {
				oos.writeObject(arr[i]);
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

2. 프로그램 <-- 파일 (입력)

public void fileRead() {
		try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e_phones.txt"))){
			/*
			System.out.println(ois.readObject());
			System.out.println(ois.readObject());
			System.out.println(ois.readObject());
			System.out.println(ois.readObject());// 파일의 끝을 만났을때 EOFException(EndOfFile) 예외발생 ->프로그램 정상종료
			*/
			//반복문 사용
			while(true) { // 조건이 없기때문에 무한반복 돌리고, 파일의 끝을 만나면 EOFException 만나 예외처리 됨 
				System.out.println(ois.readObject());
			}
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch(EOFException e) { // IOException이 부모타입 클래스이므로 자식타입 예외클래스를 위에 작성해야함 
			System.out.println("파일을 다 읽었습니다.");
		} catch (IOException e) { //EOFException발생시 오류 추적구문 알려줌 
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
		 
		System.out.println("프로그램을 종료합니다.");
	}
복사했습니다!