1

基本的に、Java File クラスの list 関数を使用して、フォルダー内のすべてのファイルのリストを実行しようとしています。 artistList = (new File(myPathName)).list();

しかし、Windows 7 で「隠しファイルを表示」した後でも、見つからないファイルがいくつかあります。これらのファイルがどこにあるのか疑問に思っています。

それが役立つ場合、私が検索しているパスは、すべての曲データ/mediaを整理したようなフォルダーです。/media/artist/album/title.mp3私が見つけた余分なファイルはAlbumArt jpegファイルです(そして、最初にsongbirdバージョン9を使用して最初にフォルダーをソートしました.ID3タグに一致する名前を小さなJavaプログラムで自分で変更しようとしています)。

4

1 に答える 1

0

あなたが説明した組織では、検索/リストが開始されるディレクトリにメディアファイルはありません。実際に探しているファイルを取得できるようになるまで、/mediaサブディレクトリをナビゲートする必要があります。/media/artist/albumまた、フィルターをメソッドに追加しlist、フィルターの accept メソッドを実装して、サムネイルと非表示のメタファイルを追い出す必要がある場合もあります。

ここにあなたを助けることができるコード(テストされていない)があります

private final static Set<String> mediaExtensions; 

static {
    mediaExtensions = new HashSet<String>();
    mediaExtensions.add(".mp3");
    mediaExtensions.add(".wav");
    mediaExtensions.add(".ogg");
    // and so on
}

public static void list(File file, List<File> result) {
    if(file.isFile()) {
        result.add(file);
    } else if(file.isDirectory()) {
        File files[] = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                boolean accept = false;
                int i = pathname.getName().lastIndexOf('.');
                if(i != -1) {
                    String ext = pathname.getName().substring(i);
                    accept = (! pathname.isHidden()) &&
                        mediaExtensions.contains(ext);  
                }
                return accept;
            }
        });
        if(files != null) {
            for(File f : files) {
                list(f, result);
            }
        }
    }
}
于 2012-01-06T09:54:23.787 に答える