Swingのコンポーネントとして使える。AWTにはない。
import javax.swing.*;
public class MyClass extends JApplet{
JFileChooser fileChooser;
public void myFileChooser(){
//初期化
fileChooser = new JFileChooser(); //引数無しの場合、ユーザのデフォルトディレクトリで開く(自分の名前のフォルダ)
//指定する場合、String型でディレクトリ名を指定
/////////////////////////
// ファイルを開く場合
//ダイアログ開く
int result = fileChooser.showOpenDialog( null ); //引数は親コンポーネント
//ファイルを選択してファイルチューザを終了した場合
if (result==JFileChooser.APPROVE_OPTION) {
String filepath = fileChooser.getSelectedFile().getPath();
String filename = fileChooser.getSelectedFile().getName();
byte[] fileContent = new byte[BUFFER_LENGTH];
FileInputStream fis = new FileInputStream(filepath);
int nByte = fis.read(fileContent, 0, BUFFER_LENGTH); //読み込んだバイト数が返る
}
//ファイルを選択せずキャンセルした場合
else if (result == JFileChooser.CANCEL_OPTION){
}
//エラーの場合(どんなときエラーになるんだろ)
else if (result == JFileChooser.ERROR_OPTION){
}
////////////////////////////
// ファイルを保存する場合
fileChooser.setSelectedFile(new File("default_savefilename.ext")); //ファイル名を指定して、ファイルチューザを開く
//ダイアログ開く
int ret = fileChooser.showSaveDialog(null);
//[保存する]ボタンを押した場合
if (ret == JFileChooser.APPROVE_OPTION){
String filepath = fileChooser.getSelectedFile().getPath();
String filename = fileChooser.getSelectedFile().getName();
FileOutputStream fos = new FileOutputStream(filepath);
fos.write(content); //contentがファイルの中身。byte[]
}
//ファイルを選択せずキャンセルした場合
else if (result == JFileChooser.CANCEL_OPTION){
}
//エラーの場合(どんなときエラーになるんだろ)
else if (result == JFileChooser.ERROR_OPTION){
}
}
};
ファイルチューザ自体は、ファイル名を選択するだけのモノ。
読み込みや書き込みは、別途行う必要がある。
選択したファイル情報は、getSelectedFile()で取得できる(File型)
ファイル名は、getSelectedFile().getName()
フルパスは、getSelectedFile().getPath()
読み込みの時は、
showOpenDialog()を呼び、getSelectedFile()した名前のファイルを読み込めば良い。
保存の時は、
まず保存するファイル名をsetSelectedFile()で指定し、(ファイルチューザを開いたときに、はじめから入力されているファイル名を指定しておく)
showSaveDialog()を呼ぶ。
で、getSelectedFile()したファイル名で保存する。(ユーザがファイル名をチューザ内で変えてるかもしれないからね)
参考
Sun
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JFileChooser.htmlJavaDrive
http://www.javadrive.jp/tutorial/jfilechooser/index3.htmlPR