尝试使用JavaFX导入mp3文件时出错

时间:2015-01-13 02:04:00

标签: java macos javafx

所以我尝试运行我的应用程序,它在终端给了我这个警告:

Jan 12, 2015 8:57:00 PM com.sun.javafx.tk.quantum.PrismImageLoader2$PrismLoadListener imageLoadWarning
WARNING: null
Jan 12, 2015 8:57:00 PM com.sun.javafx.tk.quantum.PrismImageLoader2$PrismLoadListener imageLoadWarning
WARNING: Corrupt JPEG data: premature end of data segment`

它会在/Dir中经过两首歌曲(六首),然后意外停止。

如何让它不发出此警告?我如何让它通过整个目录?

public void getMusicDirectory() {
    try {
        File folder = new File("./Dir");
        File[] contents = folder.listFiles();
        for (int i = 0; i < contents.length; i++) {
            String name = contents[i].getName();
            //System.out.println(name);

            if (name.indexOf(".mp3") == -1) {
                continue;
            }

            //System.out.println(name + "continuing");
            FileInputStream file = new FileInputStream(contents[i]);
            int size = (int)contents[i].length();
            //System.out.println(size);
            file.skip(size - 128);
            byte[] last128 = new byte[128];
            file.read(last128);
            String id3 = new String(last128);
            String tag = id3.substring(0, 3);
            if (tag.equals("TAG")) {
                songsDir.add(new Song((new MediaPlayer(new Media(contents[i].toURI().toString()))),id3));
                file.close();
            } else
                file.close();
        }
    } catch (Exception e) {
        System.out.println("Error -- " + e.toString());
    }
}

这是我正在使用的代码。我不明白为什么它不会通过所有文件,或者为什么它会触发警告。

1 个答案:

答案 0 :(得分:0)

我有一个几乎类似的问题,看来问题出在我使用的数据类型上。我在我的玛丽亚数据库数据库中使用了 blob ,但是一旦将其更改为 LONGBLOB ,它就可以完美运行。我试图将图像从数据库加载到javafx Imageview