Java:如何将两个.text文件合并为一个?

时间:2014-12-08 23:09:03

标签: java arrays sorting merge

对于这个程序,我必须合并两个文件,一个包含学生姓名和ID号,另一个包含类ID代码。然后,我必须将ID代码与学生匹配到课程的ID代码,并按字母顺序将它们分类为新的课程名单。

我必须使用数组和二进制搜索。

我真的不确定如何做到这一点。我没有多少,但我拥有的是:

import java.io.*;
import java.util.Scanner;

public class MergingFiles {


  public static void main(String[] args) throws IOException { 
    Scanner studentFile = new Scanner(new File("students.txt"));
    Scanner classFile = new Scanner(new File("classes.txt"));

    while (studentFile.hasNext()){
     }
    while (classFile.hasNext()){
     }
      //as long as another line, keeps running
      //sort students alphabetically
      //2 substrings, one id #, one students
      //read id codes, match with name
      //create new roster file


  }



}

我知道我需要将内容放入数组中,但是什么样的数组以及如何编写?

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

怎么样:

1。)创建一个包含变量Studentname的{​​{1}}类

2。)扫描学生列表时,将其添加到id。数组无法调整大小(似乎您不允许使用列表),所以请考虑一下您如何知道阵列的大小,以便您不必使用调整它的大小(除非你想添加代码来动态调整数组大小,这也是可行的。)

3.)排序Student[](二进制搜索的要求)。如果您必须手动执行此操作,那么您必须编写自己的排序实现(考虑您将要比较的Student[]对象的哪个字段)。如果您被允许使用API​​ sort methods(并且您已经涵盖了界面),那么只需Student实施Student,然后拨打Comparable

4。)在扫描类文件时,我假设你需要在这里使用二进制搜索来查找Arrays.sort(基于他们的id),但我不确定输入文件的格式,所以我不确定我能给你太多的指导。

答案 1 :(得分:0)

试试这个

 public static File mergeAllFiles(File[]files,File dest) throws IOException{
    List<String> paths = 
   Stream.of(files).map(File::getPath).collect(Collectors.toList());
    for (String string : paths) {
        List<String> allLines = Files.readAllLines(Paths.get(string));
        Files.write(Path.of(dest.getPath()),allLines, StandardOpenOption.APPEND);
    }
    return dest;
}