혼자 공부하는 자바 14장 입출력 스트림 확인 문제
2023. 2. 24. 23:00ㆍ공부/자바
반응형
<혼자 공부하는 자바> 신용권 저, 한빛 미디어 출판(2019.06.10)
※ 직접 풀이한 문제
14-1 확인 문제 613p
14-1-1 맞는 것에 O표, 틀린 것에 X표 하세요.
- x - 바이트는 InputStream, OutputStream, 문자 기반은 Reader와 Writer 기반으로 사용된다.
- o
- o
- o
14-1-2 맞는 것에 O표, 틀린 것에 X표 하세요.
- x - 바이트 기반은 InputStream을 사용한다.
- o
- o
- o
14-1-3 맞는 것에 O표, 틀린 것에 X표 하세요.
- o
- o
- o
- x - b에서 데이터가 저장될 길이다.
14-1-4 출력 스트림에서 데이터를 출력한 후 flush() 메소드를 호출하는 이유가 무엇입니까?
- ① - 출력 스트림의 버퍼에 있는 데이터를 모두 출력하고 버퍼를 비운다.
14-2 확인 문제 631p
14-2-1 맞는 것에 O표, 틀린 것에 X표 하세요.
- o
- o
- x - DataInputStream은 객체를 입력하는 보조 스트림이다.
- o
14-2-2 각 라인 번호를 추가해 모니터로 출력하는 프로그램을 작성해보세요.
//answer- AddLineNumberExample.java
package sec02.verify.exam02;
import java.io.BufferedReader;
import java.io.FileReader;
public class AddLineNumberExample{
public static void main(String[] args) throws Exception{
String filePath="src/sec02/verify/exam02/AddLineNumberExample.java";
FileReader fr=new FileReader(filePath);
BufferedReader br=new BufferedReader(fr);
int line=1;
while(true) {
String data=br.readLine();
if(data==null) break;
System.out.println(line++ +": "+ data);
}
br.close();
}
}
14-3 확인 문제 643p
14-3-1 이 문제는 정답 없이 독자 여러분이 직접 개발해보는 작은 프로젝트입니다. 이 책을 학습하고 나서 뭔가를 만들고 싶다는 생각이 든다면, 아래의 메뉴를 가지고 있는 콘솔 게시판을 만들어보세요. 어떤 경우라도 예외가 발생되어 프로그램이 종료되지 않도록 예외 처리에 만전을 기하기 바랍니다. 추가적인 기능이 필요하다면 여러분의 아이디어와 결합해보세요.
//answer - Board.java
package sec03.verify.exam01;
public class Board implements Serializable{
private int bno;
private String title;
private String content;
private String writer;
private Date date;
public Board(int bno, String title, String content, String writer, Date date) {
super();
this.bno = bno;
this.title = title;
this.content = content;
this.writer = writer;
this.date = date;
}
public int getBno() {return bno;}
public void setBno(int bno) {this.bno = bno;}
public String getTitle() {return title;}
public void setTitle(String title) {this.title = title;}
public String getContent() {return content;}
public void setContent(String content) {this.content = content;}
public String getWriter() {return writer;}
public void setWriter(String writer) {this.writer = writer;}
public Date getDate() {return date;}
public void setDate(Date date) {this.date = date;}
}
//answer - BoardService.java
package sec03.verify.exam01;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class BoardService{
private List<Board> list=new ArrayList<>();
private Scanner scanner=new Scanner(System.in);
private int counter;
public BoardService(){
}
public void showMenu() {
while(true) {
System.out.println("-----------------------------------------------------------------------------");
System.out.println("1.목록보기 | 2.상세보기 | 3.수정하기 | 4.삭제하기 | 5. 파일 저장 | 6.종료");
System.out.println("-----------------------------------------------------------------------------");
System.out.print("선택: ");
String selectNo=scanner.nextLine();
switch(selectNo) {
case "1":showList();break;
case "2":showDetail();break;
case "3":modifyBoard();break;
case "4":deleteBoard();break;
case "5":saveFile();break;
case "6":return;
default: System.out.println("잘못된 선택입니다. 다시 선택해주세요.");
}
}
}
public void showList() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd a hh:mm");
for(Board b : list) {
System.out.println(b.getBno()+"\\t"+b.getTitle()+"\\t"+b.getWriter()+"\\t"+sdf.format(b.getDate()));
}
}
public void showDetail() {
//search
int index=searchIndex();
if(index==-1){
System.out.println("해당하는 글이 없습니다.");
return;
}
//show detail
Board target=list.get(index);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd a hh:mm");
System.out.println("글번호: "+target.getBno());
System.out.println("글제목: "+target.getTitle());
System.out.println("글내용: "+target.getContent());
System.out.println("글쓴이: "+target.getWriter());
System.out.println("게시일: "+sdf.format(target.getDate()));
}
public void modifyBoard() {
//search
int index=searchIndex();
if(index==-1){
System.out.println("해당하는 글이 없습니다.");
return;
}
//show detail
Board target=list.get(index);
System.out.print("글제목> ");
target.setTitle(scanner.nextLine());
System.out.print("글내용> ");
target.setTitle(scanner.nextLine());
}
public void deleteBoard() {
//search
int index=searchIndex();
if(index==-1){
System.out.println("해당하는 글이 없습니다.");
return;
}
//show detail
list.remove(index);
}
public void saveFile() {
try {
FileOutputStream fos=new FileOutputStream("C:/Temp/board.db");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(list);
oos.flush();
oos.close();
System.out.println("저장 완료.");
}catch(IOException e) {
System.out.println("error 발생: "+e.getMessage());
}
}
public void loadFile() {
try {
FileInputStream fis=new FileInputStream ("C:/Temp/board.db");
ObjectInputStream ois=new ObjectInputStream (fis);
list=(List<Board>) ois.readObject();
ois.close();
}catch(IOException e) {
System.out.println("error 발생: "+e.getMessage());
}catch(ClassNotFoundException e) {
System.out.println("error 발생: "+e.getMessage());
}
}
public int searchIndex(){
int result=-1;
System.out.print("글번호> ");
Scanner scanner=new Scanner(System.in);
int targetNo=Integer.parseInt(scanner.nextLine());
for(Board b : list) {
if(b.getBno()==targetNo){
result=targetNo;
}
}
return result;
}
}
//answer - BoardServiceExample.java
package sec03.verify.exam01;
public class BoardServiceExample{
public static void main(String[] args){
BoardService bs=new BoardService();
bs.showMenu();
}
}
반응형
'공부 > 자바' 카테고리의 다른 글
혼자 공부하는 자바 13장 컬렉션 프레임 워크 확인 문제 (0) | 2023.02.23 |
---|---|
혼자 공부하는 자바 12장 스레드 확인 문제 (0) | 2023.02.22 |
혼자 공부하는 자바 11장 기본 API 클래스 확인 문제 (0) | 2023.02.21 |
혼자 공부하는 자바 10장 예외 처리 확인 문제 (0) | 2023.02.20 |
혼자 공부하는 자바 09장 중첩 클래스와 중첩 인터페이스 확인 문제 (0) | 2023.02.18 |