Java への読み込み

Toru Kano 

カラーマップファイルを Java に読み込ませていきます。

カラーマップファイルがテキストファイルなので、通常のテキストと同じように読み込むことができます。

読み込みボタンなどを作成し、クリックした際の処理として以下のコードを書きます。

       try {
            // ファイルを開く
            File file = new File("default.cmp");
            FileInputStream fis = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader bur = new BufferedReader(isr);

            // ファイルの中身を読み込んで出力画面に表示
            String line;
            while ((line = bur.readLine()) != null) {
                System.out.println(line);
            }

            // ファイルを閉じる
            bur.close();
            isr.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

必要に応じて、[右クリック] → [インポートを修正] を選択し、ライブラリをインポートして下さい。

「ファイルを開く」の File クラスの部分では、開くファイルのパスを指定します。
上のソースコードでは相対パスで指定していますが、
下の例のように絶対パスで指定することもできます。

File file = new File("C:/Users/Toru/Documents/ColorMaps/greyscale.cmp");

ファイル選択ダイアログ

ファイル選択ダイアログ(JFileChooser)を使うと、
毎回ソースコードを書き換える必要がなくなるので便利です。
File を指定する部分を以下のように書き換えます。

JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return;
File file = fc.getSelectedFile();

以下のように FileNameExtensionFilter クラスを使うことで、
表示するファイルの種類を制限することも可能です。

JFileChooser fc = new JFileChooser();
fc.setFileFilter(new FileNameExtensionFilter("カラーマップファイル", "cmp", "cmap"));
if (fc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return;
File file = fc.getSelectedFile();

また、2回目以降にファイル選択ダイアログを開くとき、
前回開いたファイルと同じフォルダから参照したいことも多いかと思います。
そのような場合は、フィールド(ボタンの命令などの外側)に
ファイルのパスを記憶する String 型の変数を用意しておき、(1行目)
ファイルを開くたび、パスを更新するコードを書きます。(9行目)
後は、ファイル選択ダイアログを出すときにそのパスを指定するだけです。(5行目)

String lastDir = "";
    private void btnReadCMP(java.awt.event.ActionEvent evt) {                                         
        try {
            // ファイルを開く
            JFileChooser fc = new JFileChooser(lastDir);
            fc.setFileFilter(new FileNameExtensionFilter("カラーマップファイル", "cmp", "cmp"));
            if (fc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return;
            File file = fc.getSelectedFile();
            lastDir = file.getAbsolutePath();