0

これは本当におかしなことかもしれませんが、ファイルディレクトリにアクセスして、その中のすべての画像をロードできるようにしようとしています。何らかの理由で「/Images」などのファイルディレクトリを入力すると、新しいファイルを作成すると「\ Images」と表示され、バックスラッシュであるためWindowsがディレクトリを見つけることができません...

コード:

private final String imgDir =  "/Images";

File dir = new File(imgDir);

System.out.println(imgDir);
System.out.println(dir);

File[] files = dir.listFiles(new FilenameFilter() {
  public boolean accept(File dir, String fname) {
     return fname.endsWith(".png") || fname.endsWith(".bmp") || fname.endsWith(".jpg");
  }
});

印刷出力は、それぞれ「/Images」と「\Images」です。dirが間違っているため、ファイルは常にnullになります。なぜこれができるのか、何か考えはありますか?

編集:わかりました、動作しました。相対パスを使用する必要があるのは大丈夫でしたが、それはsrcフォルダーにあるので、「。\ src \ Images」にする必要がありました:Dこれを行うのは悪い習慣ですか?Imagesフォルダをルートプロジェクトディレクトリに移動する必要がありますか?

4

2 に答える 2

2

File.separator明示的なスラッシュの代わりに 文字列を作成してみてください。例: private final String imgDir = File.separator + "Images"

于 2012-06-29T04:19:58.483 に答える
0

バックスラッシュであるため、Windowsはディレクトリを見つけることができません

それは理由ではありません。Windowsはバックスラッシュ自体を使用します。

dirが間違っているため、ファイルは常にnullになります。

それは、たとえば、あなたのコメントに従ってあなたが意図し./Imagesたが実際にコーディングした場合にそれを行います/Images

于 2012-06-29T06:21:37.190 に答える