java - 如何将输入文件中的行分配给类值数组?

标签 java arrays file-io fileinputstream

我想要做的是将输入文件的每一行分配给一个数组值。由于数组是 Song[] 类型,我不知道如何执行此操作。

public int readMusicCollection(Song[] array, String filename) {
    int count = 0;
    Scanner inputStream = null;

    try {
        inputStream = new Scanner(new File(filename));
    } catch (FileNotFoundException e) {
        System.out.println("Cannot open input file: " + filename);
    }

    while (inputStream.hasNextLine()) {
        array[count] = inputStream.nextLine();
    }

    return count;
}

最佳答案

基本上,您想要读取文件的每一行并将其转换为歌曲:

public static List<Song> readMusicCollection(String filename) {
    List<String> allLines = Files.readAllLines(new File(filename).toPath());
    // convert to Song:
    List<Song> songs = new ArrayList<>(allLines.size());
    for(String line : allLines) {
        Song song = // convert line to Song
        songs.add(song);
    }
    return songs;
}

使用 Java 8:

List<Song> songs = 
    Files.lines(new File(filename).toPath())
         .map(line -> transformToSong(line))   // TODO: implement transformToSong
         .collect(Collectors.toList());

关于java - 如何将输入文件中的行分配给类值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33848476/

相关文章:

java - 没有 NIO 的全双工 TCP 连接不可能吗?

c++ - 检查哪个模块最接近

arrays - 为了理解 Option 数组

java - 字符读取器/写入器 FileReader 和 FileWriter 无法读取/写入中文文件,但字节读取器/写入器工作正常

java - 如何在此 for 循环中使用并行流

java - 如何计算App Engine SDK本地测试环境中Datastore读/写的总数?

java - 如何使用 JAXB 和 XmlJavaTypeAdapter 序列化列表?

arrays - 如何在Tensorflow中传递2个不同长度的数组作为一个训练单元?

c++ - 如何删除 C++ 中的非空目录?

php - 在 mysql 中用日期重命名输出文件