SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

作って覚えるJavaプログラミングのススメ

Java入門 (6) - テキストファイルアクセスと例外処理

作って覚えるJavaプログラミングのススメ 第6回


JFileChooserでオープンダイアログを使う

 GUIからファイルアクセスを利用するとき、何といっても必要となってくるのが「ファイルダイアログ」でしょう。一般のアプリケーションでは、ファイルを開いたり保存するときにはそのためのファイルダイアログが現れます。ここでファイルを選んだり、ファイル名を入力したりしてファイルを操作するのです。

 このファイルダイアログは、Swingでは「JFileChoser」として用意されています。これは、2つのボタンクリック時の処理を行っているactionPerformedで利用されています。まずは、「Load」ボタンを押したときの処理からです。

JFileChooserのオープンダイアログ。ファイルを開くときに利用される。
JFileChooserのオープンダイアログ。ファイルを開くときに利用される。
if (ev.getSource() == button1){

 こんな条件文があると思います。getSourceは、イベントが発生したコンポーネントを返すメソッドです。つまりこれで、アクションイベントが発生したのはbutton1かどうかをチェックしていたのです。

 button1がクリックされていた場合には、JFileChooserを使ってオープンダイアログ(ファイルを開くときのダイアログ)を表示させます。まず、インスタンスを作成します。

JFileChooser chooser = new JFileChooser();

 これは、単純にnewするだけでOKです。他に、いろいろと引数を指定したやり方もありますが、ここでは1番シンプルに引数なしで使うことにしましょう。インスタンスが準備できたら、オープンダイアログを呼び出します。

int res = chooser.showOpenDialog(this);

 この「showOpenDialog」を呼び出すだけで、自働的にオープンダイアログが画面に現れます。ダイアログが現れている間、プログラムの処理はこのshowOpenDialog部分で停止したままになっています。そして、ここでファイルを選んでOKすると、ダイアログが消え、実行結果を示す値が変数resに収められて再び処理が続けられるようになります。

 なお、引数に指定されるのは、このダイアログが属するコンテナです。ここではthisを指定していますが、こうすることで、このJFrameウインドウに属する形でダイアログが表示されます。よくわからなければ「引数はthisを指定する」とだけ覚えておけばいいでしょう。

 このshowOpenDialogメソッドは、「どのようにダイアログを閉じたか」を示す値が返されるようになっています。これは、JFileChooserにクラスフィールドとして用意されています。ファイルを選択した場合には、APPROVE_OPTIONというクラスフィールドの値が返されるようになっています。

if (res == JFileChooser.APPROVE_OPTION){

 そこで、このように返値がJFileChooser.APPROVE_OPTIONと等しい場合には、ファイルが選択されたとして処理を行えばいいことになります。ここでは、JFileChooserから選択したファイルの絶対パスを取り出して、これをloadFromFileに引数として渡して呼び出しています。

String fname = chooser.getSelectedFile().getAbsolutePath();
area.setText(loadFromFile(fname));

 選択したファイルは、getSelectedFileというメソッドで得られます。ただし、これで得られるのは「java.io.File」というクラスのインスタンスなのです。このFileクラスは、ファイルを扱うためのもので、ファイル関係全般で用いられます。今回はFileについては、「getAbsolutePathというメソッドを呼び出すと、そのファイルの絶対パスをStringで得られる」ということだけ理解しておけば十分でしょう(実をいえば、Fileインスタンスからそのままファイルを利用することもできるのですが、今回はそれらについての説明は割愛します)。

保存ダイアログの場合は?

 ファイルの保存も同様です。こちらは、JFileChooserインスタンスを作成した後、「showSaveDialog」でダイアログを呼び出します。

JFileChooser chooser = new JFileChooser();
int res = chooser.showSaveDialog(this);

 そして、返された値がJFileChooser.APPROVE_OPTIONと等しいかどうかをチェックし、trueの場合にはgetSelectedFileのgetAbsolutePathを呼び出して絶対パスを取り出し、saveToFileでファイルに保存を行います。

if (res == JFileChooser.APPROVE_OPTION){
    String fname = chooser.getSelectedFile().getAbsolutePath();
    saveToFile(fname,area.getText());

 基本的には、showOpenDialogとshowSaveDialogの違いがあるだけで、他はほぼ同じ使い方であることが分かります。このままでは、まだ表示されるファイルの種類などもまったく無指定ですから、本格的に使うなら「.txt」ファイルだけ扱えるようにフィルタ設定するなどいろいろと機能を覚えておく必要があるでしょう。とりあえずここであげた基本的な使い方だけでも、十分ファイルダイアログの便利さを実感できるはずです。

JFileChooserのセーブダイアログ。ファイルを保存する際に利用される。
JFileChooserのセーブダイアログ。ファイルを保存する際に利用される。

まとめ

 やや後半は駆け足になってしまいましたが、テキストファイルの利用、例外処理、GUIで利用するためのファイルダイアログといったものの基本について一通り説明しました。テキストファイルが利用できるようになるだけでも、ずいぶんと作成できるプログラムの幅は広がります。

 テキストファイルは、各種のファイルアクセスの最も基本となるものですから、ここで「ファイルを読み書きする」ということの基本をしっかり身につけておくとよいでしょう。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
作って覚えるJavaプログラミングのススメ連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2295 2008/04/10 17:08

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー