본문 바로가기

Swing/JFileChooser

JFileChooser example

JFileChooser 를 이용한 파일열기 / 저장 대화상자 예



파일 열기 다이얼로그

JFileChooser chooser = new JFileChooser();


        chooser.setFileFilter(new CustomFilter());

        chooser.setCurrentDirectory(new File("D:/test"));


        int returnVal = chooser.showOpenDialog(this);

        if(returnVal == JFileChooser.APPROVE_OPTION) {

            File file = chooser.getSelectedFile();

            try {

                textArea.read(new FileReader(file.getAbsolutePath()),"텍스트 파일");

            } catch (IOException ex) {

                ex.printStackTrace();


            }

        }



위의 코드에 사용된 커스텀필터 클래스

CustomFilter.java

import java.io.File;


class CustomFilter extends javax.swing.filechooser.FileFilter {


    @Override

    public boolean accept(File file) {

      return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");

    }


    @Override

    public String getDescription() {

        return "Text documents (*.txt)";

    }

}



파일 저장 대화상자

이벤트 핸들러 메소드에 다음과 같이 입력한다

JFileChooser fileChooser = new JFileChooser();

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


int userSelection = fileChooser.showSaveDialog(this);


if (userSelection == JFileChooser.APPROVE_OPTION) {

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

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

if(n==JOptionPane.NO_OPTION) return;


File fileToSave = fileChooser.getSelectedFile();

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

FileWriter fw = null;

try {

fw = new FileWriter(fileToSave);

fw.write(textArea.getText());

fw.close();

System.out.println("다른 이름으로 저장 성공");

} catch (IOException ex) {

Logger.getLogger(SwingFrame.class.getName()).log(Level.SEVERE, null, ex);

}

}