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 |