• ベストアンサー

Fileクラス

いろいろ調べてみたんですがよくわからないので教えてください。 File d = new File("."); String[] f= d.list(); のようにして”・”カレントディレクトリの ファイル名が取得できます。f[]の配列の中身がファイル名になります。 そこで、カレントディレクトリの、ある特定の拡張子のものだけ取り出せないかと、 File d = new File(".\\*.java"); (ここでは.javaのもの) としたのですが、 java.lang.NullPointerException のエラーがでてしまいます。 どのようにしたら、 *.java のような特定の拡張子のファイル取得が出来ますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#227796
noname#227796
回答No.1

あるサイトから昔パクったものですが、 File d = new File("."); // FilenameFileter は無名インナクラス String[] f = d.list(new FilenameFilter() {   public boolean accept(File d, String name) {     return (name.endsWith(".java"));   } }); でどうでしょう? #あ、サイトが見つかった。→参考URL参照

参考URL:
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/CompareSuffix.html
azicyan
質問者

補足

取り急ぎありがとうございます。 endsWithと言うメソッドを使うのですね。 一度試してみて、お礼いたします。

その他の回答 (1)

  • lawson
  • ベストアンサー率44% (29/65)
回答No.2

解決方法としては No1さんが示してくれていますが。 結局、Fileクラスのコンストラクタは 実行時に唯一1つのファイルまたは、ディレクトリ が特定できなければ nullを返却するのじゃないでしょうか? File d = new File(".\\*.java"); は 以下に示す2つの理由のどちらかで nullを返却して そのnullに対して、listメソッドを 発行しようとした結果 java.lang.NullPointerException になったかもしれません。 理由1 「*.java」という名前を持つファイルが存在しない とおもわれてしまった。 理由2 *.javaの意味自体は解釈したが、 それでは1つのファイルまたは、ディレクトリ に特定できないと判断されてしまった。 以上

azicyan
質問者

お礼

ありがとうございました。 一度締め切ります。 わからなかったらまた質問させてください_(._.)_

関連するQ&A