Не читает подкаталог с файлами [закрыт]

103
30 ноября 2019, 11:30

Файлы с главного каталога считывает а с подкаталога нет в чем может быть проблема?

public class Main {
public static void main(String[] args) {
    String fileLocation = "D:\\music";
    File dir = new File(fileLocation);
    readFiles(dir);
}


 public static void readFiles(File baseDirectory){
    try {
        if(baseDirectory.isDirectory()) {
            for (File fileloop : baseDirectory.listFiles()) {
                if(fileloop.isFile()) {
                    InputStream input = new FileInputStream(fileloop);
                    ContentHandler handler = new DefaultHandler();
                    Metadata metadata = new Metadata();
                    Parser parser = new Mp3Parser();
                    ParseContext parseCtx = new ParseContext();
                    parser.parse(input, handler, metadata, parseCtx);
                    input.close();
                    String[] metadataNames = metadata.names();
                    System.out.println("----------------------------------------------");
                    System.out.println("Title: " + metadata.get("title"));
                    System.out.println("Artists: " + metadata.get("xmpDM:artist"));
                    System.out.println("Album : " + metadata.get("xmpDM:album"));
                    System.out.println("Duration : " + metadata.get("xmpDM:duration"));
                    System.out.println("Path : " + fileloop.getAbsolutePath());
                }
                else{

                    InputStream input = new FileInputStream(fileloop);
                    ContentHandler handler = new DefaultHandler();
                    Metadata metadata = new Metadata();
                    Parser parser = new Mp3Parser();
                    ParseContext parseCtx = new ParseContext();
                    parser.parse(input, handler, metadata, parseCtx);
                    input.close();
                    String[] metadataNames = metadata.names();
                    System.out.println("----------------------------------------------");
                    System.out.println("Title: " + metadata.get("title"));
                    System.out.println("Artists: " + metadata.get("xmpDM:artist"));
                    System.out.println("Album : " + metadata.get("xmpDM:album"));
                    System.out.println("Duration : " + metadata.get("xmpDM:duration"));
                    System.out.println("Path : " + fileloop.getAbsolutePath());
                    readFiles(fileloop);
                }
            }
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (TikaException e) {
        e.printStackTrace();
    }
}
}
Answer 1

Вот это работает как надо,

import java.io.*; 
 
public class Main { 
 
    public static void main(String[] args) throws Exception { 
        String fileLocation = "D:/music"; 
        File dir = new File(fileLocation); 
        readFiles(dir); 
    } 
 
    static void readFiles(File baseDirectory) throws Exception { 
        for (File fileloop : baseDirectory.listFiles()) { 
            if (fileloop.isFile()) { 
                System.out.println("file : " + fileloop.getAbsolutePath()); 
            } else { 
                System.out.println("dir : " + fileloop.getAbsolutePath()); 
                readFiles(fileloop); 
            } 
        } 
    } 
}

а у Вас InputStream в windows не открываются из-за

наверное...

Answer 2

все получилось я просто сделал так, вчера когда засыпал пришла мысль в голову)

        if(baseDirectory.isDirectory()) {
            for (File fileloop : baseDirectory.listFiles()) {
                if(fileloop.isFile()) {
                    InputStream input = new FileInputStream(fileloop);
                    ContentHandler handler = new DefaultHandler();
                    Metadata metadata = new Metadata();
                    Parser parser = new Mp3Parser();
                    ParseContext parseCtx = new ParseContext();
                    parser.parse(input, handler, metadata, parseCtx);
                    input.close();
                    String[] metadataNames = metadata.names();
                    System.out.println("----------------------------------------------");
                    System.out.println("Title: " + metadata.get("title"));
                    System.out.println("Artists: " + metadata.get("xmpDM:artist"));
                    System.out.println("Album : " + metadata.get("xmpDM:album"));
                    System.out.println("Duration : " + metadata.get("xmpDM:duration"));
                    System.out.println("Path : " + fileloop.getAbsolutePath());
                }
                else{
                    readFiles(fileloop);
                }
            }
        }
READ ALSO
Java Server Page || Приоритет по файлам?

Java Server Page || Приоритет по файлам?

Когда запускаю JSP Web Application на Tomcat или JBoss Server, оно запускает indexjsp первым (index

120
Как создать всплывающее окно

Как создать всплывающее окно

Как создать всплывающее окно в Android при нажатии на слово? И что бы была возможность добавить кнопки действия

122
отправка “письма с картинкой” java

отправка “письма с картинкой” java

я уверен, что подобные вопросы тут задавались, но что-то не нашёлнужно отправить письмо с картинкой в теле письма

99
Пример авторизации yandex speechkit java

Пример авторизации yandex speechkit java

Недавно yandex поменял авторизацию speechkit c API ключа на IAM-токенВ документации yandex сказано:

113