有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    为此,应使用外部合并排序
    要了解外部合并排序,请参阅此link

    下面是代码link

    从上面的链接,只需在您的案例中使用合并操作:

     public static int mergeSortedFiles(List<File> files, File outputfile,
                    final Comparator<String> cmp, Charset cs, boolean distinct,
                    boolean append, boolean usegzip) throws IOException {
                    ArrayList<BinaryFileBuffer> bfbs = new ArrayList<BinaryFileBuffer>();
                    for (File f : files) {
                            final int BUFFERSIZE = 2048;
                            InputStream in = new FileInputStream(f);
                            BufferedReader br;
                            if (usegzip) {
                                    br = new BufferedReader(
                                            new InputStreamReader(
                                                    new GZIPInputStream(in,
                                                            BUFFERSIZE), cs));
                            } else {
                                    br = new BufferedReader(new InputStreamReader(
                                            in, cs));
                            }
    
                            BinaryFileBuffer bfb = new BinaryFileBuffer(br);
                            bfbs.add(bfb);
                    }
                    BufferedWriter fbw = new BufferedWriter(new OutputStreamWriter(
                            new FileOutputStream(outputfile, append), cs));
                    int rowcounter = mergeSortedFiles(fbw, cmp, distinct, bfbs);
                    for (File f : files)
                            f.delete();
                    return rowcounter;
            }