Я пытаюсь создать 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 ()