Список файлов Java в каталоге - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь получить список всех mp3-файлов в каталоге (подкаталог с названием music в каталоге апплета), чтобы затем я мог их имена в функции JavaScript, чтобы поместить их в массив.

Все работает, но процесс распечатки ... Он возвращает только самый первый mp3-файл в каталоге, а не остальные ...

Это мой код

JAVA:

import java.applet.Applet;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

public class Main extends Applet {
    private static final long serialVersionUID = 1L;
    public void init() {
        File[] lib = getFiles(new File((getCodeBase() + File.separator + "music").substring(6)));
        for (File s:lib) {
            if (s.getName().substring(s.getName().length() - 3).equalsIgnoreCase("mp3")) {
                try {getAppletContext().showDocument(new URL("javascript:addSong('"+s.getName()+"')"));}
                catch (MalformedURLException me) {}
            }
        }
        try {getAppletContext().showDocument(new URL("javascript:init()"));}
        catch (MalformedURLException me) {}
    }
    public File[] getFiles(File dir) {
        return dir.listFiles();
    }
}

JavaScript:

function addSong(s) {
    // Adding to array
    window.songs.push("music/" + s);
    // Debug message
    alert(s);
}

function init() {
// Random code to initialze music player
// getting and listing values from "songs" which got content form addSong()
}

Ответы [ 3 ]

1 голос
/ 04 марта 2012

Чтобы вывести (рекурсивно) список всех файлов (с расширением .mp3) в данном каталоге, у меня есть следующий код:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FileLister {

    private List<File> getFileList(File startingDir) throws FileNotFoundException {
        List<File> result = new ArrayList<File>();
        File[] filesAndDirs = startingDir.listFiles();
        List<File> filesDirs = Arrays.asList(filesAndDirs);
        for (File file : filesDirs) {
            result.add(file); 
            if (!file.isFile()) {               
                List<File> deeperList = getFileList(file);
                result.addAll(deeperList);
            }
        }

        return result;
    }

    public static void main(String[] args) throws FileNotFoundException {
        for(File file : new FileLister().getFileList(new File("D:\\Music"))){
            if(file.getName().contains(".")) {
                String extension = file.getName().substring(file.getName().lastIndexOf("."), file.getName().length());
                if(extension.equalsIgnoreCase(".mp3")) {
                    System.out.println(file.getName());
                }
            }
        }
    }
}
1 голос
/ 04 марта 2012

Я внес небольшие изменения в ваш код.Проверьте это.Это должно решить вашу проблему:

import java.applet.Applet;
import java.io.File;
import java.io.FilenameFilter;
import java.net.MalformedURLException;
import java.net.URL;

public class Main extends Applet {
    private static final long serialVersionUID = 1L;

    @Override
    public void init() {
        File[] lib = getMP3Files("E:/Music/BollywoodMusic"); // pass your directory name here
        for(File s:lib) {
            try { getAppletContext().showDocument(new URL("javascript:addSong('"+s.getName()+"')")); } catch(MalformedURLException me) {}
        }

        try {getAppletContext().showDocument(new URL("javascript:init()"));}
        catch (MalformedURLException me) {}
    }

    public static File[] getMP3Files(String directoryName) {
        File directory = new File(directoryName);
        return directory.listFiles(new FilenameFilter() {
            public boolean accept(File directory, String fileName) {
                return fileName.endsWith(".mp3"); } });
    }

}
0 голосов
/ 04 марта 2012

Я попробовал ваш код (на Eclipse), и он отлично работает, убедитесь, что вы поместили файлы в правильный каталог

, и я не могу понять, почему вы используете .substring(6)

...