如何使用 Scanner 类从文件中分别读取多行?

How to read multiple lines separately using Scanner class from a file?

提问人:Harsh Sharma 提问时间:2/20/2020 最后编辑:donquih0teHarsh Sharma 更新时间:2/20/2020 访问量:70

问:

我在计算机上保存了一个名称为 Playlist.txt 的文本文件,并在其中保存了两首歌曲路径。如果只有一首歌,它工作得很好,它播放得很好。但是当我添加超过 1 首歌曲路径时,它正在读取最近添加的路径,即添加的最后一首歌曲路径。那么我怎样才能让 Scanner 对象分别读取行,它应该同时播放两首歌曲。

if (ae.getSource() == open_Playlist) {
    fc = new JFileChooser();
    int i = fc.showOpenDialog(null);

    if (i == JFileChooser.APPROVE_OPTION) {
        filepath = fc.getSelectedFile().getPath();

        try {
            File playList_File = new File(fc.getSelectedFile().getPath());
            Scanner sc = new Scanner(playList_File);  
            while (sc.hasNextLine()) {
                String data = sc.nextLine();
                mp3 = new MP3Player(new File(data));
                mp3.setShuffle(true);

                System.out.println(data);
            }

            sc.close();

        } catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(rootPane, e);
        }           
    }
}
Java 文件-IO java.util.scanner bufferedreader 文件输入流

评论

0赞 Kevin Anderson 2/20/2020
您必须阅读播放列表的代码看起来没问题;如果播放列表文件中有多行,它应该能够读取它们。您能向我们展示您用于将歌曲写入播放列表的代码吗?这听起来很可疑,好像您正在覆盖播放列表文件,而不是添加到其中。
0赞 Harsh Sharma 2/20/2020
@KevinAnderson到目前为止我还没有添加该功能,我只是在测试用户是否浏览到已经创建的文本文件(playlist.txt),那么它是否能正常运行。我用记事本创建了该文件,并随机添加了两首歌曲路径。像这样 E:\NCS 歌曲\10convert.com_Calli-Boom-Revenge-Bass-Boosted_SAWz1nloykI.mp3 E:\NCS 歌曲\10convert.com_Danell-Arma-Oligarch_yhOYPGGTnIo.mp3
0赞 Kevin Anderson 2/20/2020
那好吧。。。我怀疑的下一件事是类的用法。您正在为每首歌曲创建一个新实例,并且每次都覆盖旧实例,这将只剩下一个实例:为最后一首歌曲创建的实例。您是否应该只创建一个,然后为每首歌曲调用“添加歌曲”方法?MP3PlayerMP3PlayerMP3PlayerMP3Player
0赞 Harsh Sharma 2/20/2020
@KevinAnderson我认为这是不可能的,即使我从电脑上浏览一首新歌,我也做了同样的事情。请参阅 : pastebin.com/QKEfFt7h
0赞 Kevin Anderson 2/20/2020
是的,但那是播放一首歌,或者至少只开始一首演奏。现在,如果一首歌曲已经在播放,但您浏览了另一首歌曲,会发生什么?我猜旧歌停止播放,新歌开始......当您在阅读播放列表时连续开始几首歌曲时,也会发生同样的事情。您可能应该使用类上的一些 API 来加载整个播放列表,而不是为每首歌曲创建一个新播放器。MP3Player

答: 暂无答案