У меня очень странная проблема, я пытаюсь воспроизвести некоторые MP3-файлы с некоторым кодом Java и JLayer. У меня есть метод настройки для создания пути к файлу, но это дает мне массу горя. Вот оператор возврата (и весь код участвует в методе):FileNotFoundException, файл существует Java
private static String findSoundFile(String numSeq)
{
return "file:///Users/user/Desktop/FinishedPhone/" + numSeq + ".mp3"
}
У меня есть набор, может быть ~ 150 mp3 файлов, все названные 1.mp3, 2.mp3 и т.д. Они идут до примерно 156 (между ними есть недостающие промежутки). Основываясь на пользовательском вводе трехзначного кода, он воспроизводит один из звуков. Этот код работает безупречно для чего-то между 1-99, его когда вы добираетесь до 100, где он перестает работать. Когда пользователь нажимает 100 или 110 или что у вас есть, Java выдает исключение FileNotFoundException. Уверяю вас, файл есть. Вот код, который использует FilePath возвращенное findSoundFile:
public static void processNumberSequence(String numSeq) throws IOException
{
if (numSeq != "")
{
String soundLoc = findSoundFile(numSeq);
File file = new File(soundLoc);
System.out.println("System can read: " + file.canRead());
System.out.println(soundLoc);
SoundPlayer soundToPlay = new SoundPlayer(soundLoc);
soundToPlay.play();
}
}
Он получает страннее, когда я заполняю пространство, которое, как предполагается, numSeq заполнить, например:
private static String findSoundFile(String numSeq)
{
return "file:///Users/user/Desktop/FinishedPhone/110.mp3";
}
Приведенный выше код , отлично работает, воспроизводит звук, не повесив трубку. Любые идеи будут высоко оценены, и, пожалуйста, спросите, есть ли какая-то путаница.
StackTrace:
java.io.FileNotFoundException: /Users/user/Desktop/FinishedPhone/111.mp3 (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
at java.net.URL.openStream(URL.java:1010)
at SoundPlayer.play(SoundPlayer.java:26)
at SerialProcessor.processNumberSequence(SerialProcessor.java:37)
at SerialTest.serialEvent(SerialTest.java:98)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Ls -l одного из файлов:
-rw-r--rw- 1 user staff 432923 Feb 27 14:15 /Users/user/Desktop/FinishedPhone/111.mp3
Ls -l для один под 100:
-rw-r--rw- 1 user staff 480570 Feb 25 20:43 /Users/user/Desktop/FinishedPhone/99.mp3
Можете ли вы показать стек? – beny23
В findSoundFile(), что вы видите при просмотре «numSeq» в отладчике или при печати на System.out? –
Что вы получите, если вы отлаживаете findSoundFile для значения numSeq, когда пользователь вводит 100 или выше? –