JAVA/Basic

입출력 사용 예제

2016. 1. 28. 19:46

package org.kdea.java;


import java.io.*;


public class IOTest10 {

private static List<Member> list = new ArrayList<>();// 회원정보를 저장하는 리스트(컬렉션 사용)


public static void main(String[] args) {

try {

BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));// 키보드에서 정보를 입력받기 위해서 in이라는 참조변수사용(Stream)


String line = null;


do {

System.out.println("회원번호, 이름, 아이디, 이메일을 입력");

line = keyboard.readLine();// 키보드 입력값을 line에 저장


if (line.equals("x")) {// x를 입력하면 프로그램 종료

break;

}


insertList(line.split(" "));// 입력한 정보를 리스트에 추가하는 메소드

} while (line != null);

File saveFile = fileSaveDlg();// 저장 파일 선택 메소드

saveFile(list, saveFile);

keyboard.close();


fileList(saveFile);// 정보를 저장하는 파일 주소를 파라미터값으로 전달, 리스트 출력 메소드


} catch (Exception e) {

e.printStackTrace();

}

}


private static File fileSaveDlg() {

JFileChooser fileChooser = new JFileChooser();

fileChooser.setDialogTitle("Specify a file to save");

fileChooser.setSelectedFile(new File("fileToSave.txt")); // 디폴트 파일이름 제안

int userSelection = fileChooser.showSaveDialog(null);

File fileToSave = null;

if (userSelection == JFileChooser.APPROVE_OPTION) {

int n = JOptionPane.showConfirmDialog(null, "변경된 내용을 저장하시겠어요?", "파일저장확인", JOptionPane.YES_NO_OPTION);

// System.out.println("선택:"+n);

if (n == JOptionPane.NO_OPTION)

return null;


fileToSave = fileChooser.getSelectedFile();

System.out.println("Save as file: " + fileToSave.getAbsolutePath());

return fileToSave;

}

return null;

}


private static void saveFile(List<Member> list, File file) throws IOException {


try {


FileWriter fout = new FileWriter(file, true);

PrintWriter pw = new PrintWriter(fout);

String result = "";

for (int i = 0; i < list.size(); i++) {

Member m = list.get(i);

result = String.format("%s %d %s %s", m.getId(), m.getNum(), m.getName(), m.getEmail());

pw.println(result);

}


pw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}


}


private static void fileList(String path) {

try {

FileReader fr = new FileReader(path);// 지정한 경로의 파일에 있는 데이터를 읽어온다.

BufferedReader br = new BufferedReader(fr);// 성능 향상을 위해서 사용

String line = null;

System.out.println("============ 회원 목록 ===========");

while ((line = br.readLine()) != null) {

System.out.println(line);

}


br.close();

} catch (Exception e) {

e.printStackTrace();

}

}


private static void insertList(String[] info) {

Member m = new Member();// 객체의 주소를 담은 참조변수 m

m.setId(info[2]);

m.setNum(Integer.parseInt(info[0]));

m.setName(info[1]);

m.setEmail(info[3]);

list.add(m);

}

}

////////////회원 정보를 담는 클래스//////////

package org.kdea.java;


public class Member {

private String id;

private int num;

private String name;

private String email;


public Member(String id, int num, String name, String email) {

super();

this.id = id;

this.num = num;

this.name = name;

this.email = email;

}


public Member() {

// TODO Auto-generated constructor stub

}


public String getId() {

return id;

}


public void setId(String id) {

this.id = id;

}


public int getNum() {

return num;

}


public void setNum(int num) {

this.num = num;

}


public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public String getEmail() {

return email;

}


public void setEmail(String email) {

this.email = email;

}


}




'JAVA > Basic' 카테고리의 다른 글

2018 카카오 신입 공채 1차 코딩 3번 문항  (0) 2018.06.27
Java Reflaction 개념 및 사용법  (0) 2016.10.18
Switch 문 예제  (0) 2016.03.29
Thread 연습  (1) 2016.01.26