<分区>
我有一个非常奇怪的问题,我正在尝试用一些 Java 代码和 JLayer 播放一些 MP3。我有一个方法设置来生成文件路径,但这让我很伤心。这是返回语句(以及该方法中涉及的所有代码):
private static String findSoundFile(String numSeq)
{
return "file:///Users/user/Desktop/FinishedPhone/" + numSeq + ".mp3"
}
我有一组大约 150 个 mp3 文件,全部命名为 1.mp3、2.mp3 等。它们最多可达 156 个(中间缺少一些)。根据用户输入的 3 位代码,它会播放其中一种声音。此代码对 1-99 之间的任何值都完美有效,当您达到 100 时它就会停止工作。当用户输入 100 或 110 或您有什么时,Java 会抛出 FileNotFoundException。我向你保证,文件就在那里。下面是使用 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";
}
上面的代码,工作正常,播放声音而不挂断。任何想法将不胜感激,请询问是否有任何混淆。
堆栈跟踪:
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
100 以下的 ls -l:
-rw-r--rw- 1 user staff 480570 Feb 25 20:43 /Users/user/Desktop/FinishedPhone/99.mp3