JAVA
JFileChooser이용해서 파일 열기 , 파일 저장하기, 다른 이름으로 저장하기 ( ActionCommand로 수정해볼 예정)
소힌
2022. 1. 25. 22:28
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FileOpener extends JFrame {
File selected;
public FileOpener() {
super("FileChooser");
JPanel textpnl = new JPanel();
JTextArea jta = new JTextArea(30, 30);
JScrollPane scrl = new JScrollPane(jta);
scrl.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// JScrollpane을 등록하면 jta는 같이 첨부되는 개념
JPanel btnpnl = new JPanel();
JButton open = new JButton("파일 열기");
JButton save = new JButton("파일 저장");
JButton saveAs = new JButton("다른 이름으로 저장하기");
textpnl.add(scrl);
btnpnl.add(open);
btnpnl.add(save);
btnpnl.add(saveAs);
add(btnpnl, "North");
add(textpnl, "Center");
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
ActionListener li = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (o == open) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("c:\\aaaa\\"));
chooser.showOpenDialog(getParent());
selected = chooser.getSelectedFile();
StringBuilder sb = readFileAneGetText(selected);
jta.setText(sb.toString());
} else if (o == save) {
String save = jta.getText();
// 입력하는 메소드 만들기
saveTheFileText(save, selected);
} else if (o == saveAs) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("c:\\aaaa\\"));
chooser.showSaveDialog(getParent());
selected = chooser.getSelectedFile();
String text = jta.getText();
saveTheFileText(text, selected);
}
}
};
open.addActionListener(li);
save.addActionListener(li);
saveAs.addActionListener(li);
}
public StringBuilder readFileAneGetText(File file) {
setTitle(selected.getName());
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String string;
while ((string = br.readLine()) != null) {
sb.append(string);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb;
}
public void saveTheFileText(String string, File file) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(string);
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
일단 기능 구현은 해놓았고 중복되는 것이 있으면 따로 메소드로 만들 예정임