MediaException:媒体不可用-包含Java项目路径

MediaException:媒体不可用-包含Java项目路径,java,javafx,Java,Javafx,我正在用JavaFx开发一个小的业余项目Media Player,但我遇到了一个文件对象问题。我从文件选择器中得到以下错误,它返回了错误的路径: 线程JavaFX应用程序线程MediaException中的异常: 媒体不可用: /用户/name/Documents/projects/java/PlayFx/file:/Users/name/Downloads/Girl%20Talk%20-%20All%20Day%20IA123/01%20-%20Girl%20Talk%20-%20Oh%20N

我正在用JavaFx开发一个小的业余项目Media Player,但我遇到了一个文件对象问题。我从文件选择器中得到以下错误,它返回了错误的路径:

线程JavaFX应用程序线程MediaException中的异常: 媒体不可用: /用户/name/Documents/projects/java/PlayFx/file:/Users/name/Downloads/Girl%20Talk%20-%20All%20Day%20IA123/01%20-%20Girl%20Talk%20-%20Oh%20No.mp3 没有这样的文件或目录

我可以这样确定问题:

MP3位置:文件:/Users/name/Downloads/Girl%20Talk%20-%20All%20Day%20IA123/01%20-%20Girl%20Talk%20-%20Oh%20No.MP3

项目位置:/Users/name/Documents/projects/java/PlayFx/

但是我不明白为什么下面这行代码将这两个连接在一起?这可能是什么原因

File file = fileChooser.showOpenDialog(primaryStage);
if (file != null)
{
    try
    {
        player = new Player(file.toURI().toURL().toExternalForm());
        Scene scene = new Scene(player, 720, 535, Color.BLACK);
        primaryStage.setScene(scene);
    }
    catch (MalformedURLException e)
    {
        e.printStackTrace();
    }
}//if

对于您的代码,如果播放机类正确,则必须更改:

player = new Player(file.toURI().toURL().toExternalForm());


您没有检查file.exists以确保它确实存在于您的驱动器上。一旦获得字符串,请将%20替换为空格,否则它将找不到目录%20是操作系统处理文件名中空格的方式。在尝试打印给定目录中的所有文件名时,我还遇到了文件不工作的问题。isDirectory和isFile都显示为false。所以我检查了file.exists,结果返回false。我打印了位置,它将我的一个空间替换为%20。在执行string.replaceAll%20之后,在创建文件之前,它工作正常。你试过了吗?我试过了,但还是不走运。虽然它用空格替换了文件%20,但它仍然合并了两个目录路径问题是它合并了这两个路径?似乎可以使用file:作为分隔符分割路径:String[]path=String.splitfile:;没有注意到文件不是您代码的第一个路径的一部分,您可以尝试此player=new Playerfile.toURI.toURL.toString;
player = new Player(file.toURI().toURL().toString());