java - FileNotFoundException,文件存在 Java

标签 java file-io mp3 filenotfoundexception jlayer

<分区>

我有一个非常奇怪的问题,我正在尝试用一些 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

最佳答案

你的 numSeq 有问题。尝试像这样修剪它

 return "file:///Users/user/Desktop/FinishedPhone/" + numSeq.trim() + ".mp3

关于java - FileNotFoundException,文件存在 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350392/

相关文章:

java - 显示 PLACES_API_KEY_INVALID 但一切似乎都完成正确

java - 在容器内 Swing 容器

java - 无法更改 Java 中 JTextArea 中的文本

Java BufferedWriter 关闭()

flash - 基于 headless (headless) Flash 的 mp3 播放器

android - 单击 TextView 从原始资源播放 mp3 文件

java - 除了 instanceof 运算符之外,还有什么方法可以在 java 中进行对象类型比较?

java - 我应该添加多少个 jar 才能使应用程序正常运行?

python - 将随机数量的随机数写入文件并返回它们的平方

ios - 从 mp3 文件下载只需几秒钟