путь к mp3-файлу не воспроизводится из ArrayList?FileNotFoundException в Java - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь создать MP3-плеер (консоль только на данный момент) на Java. Я сохранил список деталей трека (Имя, Исполнитель, Длина, Жанр, Путь к треку, например "/Users/harvhead/Desktop/music.txt") в текстовом файле и использовал метод access () в PlayMusic. Класс, чтобы поместить все детали трека в отдельные списки ArrayLists. Затем я унаследовал этот класс в классе RockMusic и создал метод для поиска любой рок-музыки (жанра), а затем поместил путь дорожки в FileInputStream, чтобы затем воспроизвести Rock Mp3. Проблема заключается в том, что, хотя путь проходит правильно Я получаю FileNotFoundException (нет такого файла или каталога). Что я делаю не так ?????..Пожалуйста, помогите .. мой код указан ниже .... Я часами бился головой о стену, пытаясь понять это.

public class PlayMusic {

    List<String> trackName = new ArrayList<String>();
    List<String> artist = new ArrayList<String>();
    List<String> length = new ArrayList<String>();
    List<String> genre = new ArrayList<String>();
    List<String> ID = new ArrayList<String>();
    List<String> IDtrack = new ArrayList<String>();
    List<String> trackPath = new ArrayList<String>();

    File f = new File("/Users/harvhead/Desktop/music.txt");
    File t = new File("/Users/harvhead/Desktop/musicTracks.txt");


public void access() throws FileNotFoundException {
    Scanner sc = new Scanner(f);
    try {

// чтение каждой строки текста и помещение 1-го, 2-го, 3-го 4-го элемента в другой строковый массив

    while (sc.hasNextLine()) {
            String line = sc.nextLine();
            String[] details = line.split(",");

            String trackN = details[0];
            String artistN = details[1];

            String trackLength = details[2];
            String genreN = details[3];
            String IDN = details[4];

            String Pathtrack = details[5];

            trackName.add(trackN);

            artist.add(artistN);
            length.add(trackLength);
            genre.add(genreN);
            ID.add(IDN);

            trackPath.add(Pathtrack);

        }

    } catch (Exception e) {
        System.out.println("Playlist Error");
    }

    if (trackName.isEmpty()) {
        System.out.println("Arraylist is Empty");

    } else {
        System.out.println("ArrayList is not Empty");
    }
}

Ниже приведен метод из моего класса RockMusic:

public void rockPlayMusic() throws FileNotFoundException {

    // call the access method (from PlayMusic Class) to create arraylists from txt file

    access();

    // finding Rock tracks and then trying to play them

    for (int x = 0; x < genre.size(); x++) {
        if (genre.get(x).contains("Rock")) {

            try {

                FileInputStream fis = new FileInputStream(trackPath.get(x));
                System.out.println(trackPath.get(x));
                Player playMP3 = new Player(fis);

                playMP3.play();

            } catch (Exception e) {
                System.out.println(e);
            }
        }

    }
}

Ниже моя главная:

package musicapp;

import java.io.FileNotFoundException;


public class MusicApp {


public static void main(String[] args) throws FileNotFoundException {

    rockMusic rock = new rockMusic();

    rock.rockPlayMusic();
}

}

Ниже моя ошибка в консоли:

ArrayList is not Empty
java.io.FileNotFoundException:   "/Users/harvhead/Desktop/San Tropez.mp3" (No such file or directory)
java.io.FileNotFoundException:  "/Users/harvhead/Desktop/Slave To The Wage.mp3" (No such file or directory)
java.io.FileNotFoundException:  "/Users/harvhead/Desktop/Six Shooter.mp3" (No such file or directory)
java.io.FileNotFoundException:  "/Users/harvhead/Desktop/Bones.mp3" (No such file or directory)
BUILD SUCCESSFUL (total time: 0 seconds)

Это код для передачи пути к файлу вручную в FileInputStream, и он воспроизводит mp3 (я также получил его для печати пути к файлу в консоли).

public void manualPlayTest(){

    try {

                FileInputStream fis = new FileInputStream("/Users/harvhead/Desktop/San Tropez.mp3");
                System.out.println("/Users/harvhead/Desktop/San Tropez.mp3");
                Player playMP3 = new Player(fis);

                playMP3.play();

            } catch (Exception e) {
                System.out.println(e);
            }



}

Жестко закодированный путь в метод rockPlayMusic, и это прекрасно работает.

public void rockPlayMusic() throws FileNotFoundException {
    // call the access method (from PlayMusic Class) to create arraylists from txt file

    access();
    // finding Rock tracks and then trying to play them
    for (int x = 0; x < genre.size(); x++) {
        if (genre.get(x).contains("Rock")) {

            try {

                FileInputStream fis = new FileInputStream("/Users/harvhead/Desktop/San Tropez.mp3");
                System.out.println(trackPath.get(x));
                Player playMP3 = new Player(fis);

                playMP3.play();

            } catch (Exception e) {
                System.out.println(e);
            }
        }

    }
}

вывод на консоль из жестко закодированного пути в методе rockMusicPLay ()

...