2011-07-12 9 views
0

私はUNIXで作業しています。大文字と小文字を区別するファイル名を使用しており、大文字と小文字を区別しないでアクセスする必要があります。Unix上でのJavaの大文字と小文字を区別しないディレクトリアクセス

具体的には、プログラムはプロジェクトフォルダの/ imagesディレクトリに入る必要があります。しかし、このディレクトリはユーザが手動で作成したものであるため、Images、IMAGES、iMaGesなどと呼ばれることもあります。

どのプロジェクトフォルダにもimagesディレクトリが1つしかないことが保証されているので、ディレクトリリスト全体を取得してループすることなく直接このディレクトリにアクセスできますか?

+1

ディレクトリリストをループして大文字と小文字を区別しない比較を実行すると何が問題になりますか?ディレクトリにはほかにもたくさんのフォルダやファイルがありますか?(特にこれを1回実行し、設定ファイルなどで保存したものを保存した場合) – Foon

+0

あなたは3つの 'Images'、' IMAGES'、 'iMaGes'をUnixと同じ時間。どちらを優先するかを判断する方法が必要な場合があります。 –

答えて

3

ディレクトリ名の完全なリストを読んで、あなたのパターンと一致するかどうかを確認する方法はありません。

あなたはあなたのパターン(IAW、小文字の名前imagesに等しい任意のフォルダを、)一致しないすべてのフォルダ名をフィルタリングFilenameFilterを使用してにそれを隠すことができます。それはすべて候補戻りますので、これは、より良い方法かもしれ(IAW:あなたは一つの画像フォルダ、より多く置くクリエイティブなユーザーがいる場合./Images./imaGes./IMAGESを;))

+0

'FilenameFilter'に+1 – dhblah

0

ユーザーが作成したフォルダの場合は、ファイル選択ツールのUIを使用してフォルダを選択します。どちらか、またはプロジェクトの作成時に、あとで予測可能な方法でイメージフォルダを作成してください。

+0

これは実際にプログラムがどのように動作しているかを示していますが、私がサポートしたいレガシープロジェクトは残念ながら保証されたイメージフォルダを自動的に作成しませんでした。 – donnyton

1

ディレクトリまたは下の可能な順列と大文字のリスト内の項目のいずれか以上のリストをループ伴わない解決策はありません。

のUnix 大文字と小文字を区別し、唯一/Imageはあなたに肯定的な答えを得ることはありませんが存在するとき/imageを求めています。

唯一の例外は、使用されるファイルシステムで大文字と小文字が区別されない場合(FATの亜種では大文字と小文字は区別されません)ですが、通常は外部メディアにのみ適用されます。

2

のJava 7で呼ばれるものがありますPathMatcherこれにより、正規表現を使用してファイルを見つけることができます。

関連する問題