java - 无法将 txt 文件复制到 arraylist 并复制到文件中

标签 java file arraylist

我正在尝试将这个大的 txt 文件添加到数组列表中,然后对数据进行排序。然后将 15000 行放入各种临时文件中。我无法将数据放入每个文件中。这是我的代码:

package bigfilesorter2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class bigfilesorter2 {

    public static final int NUM_LINES = 15000;

    public static void main(String args[]) throws IOException {



        FileReader fileReader = new FileReader("Aesop_Shakespeare_Shelley_Twain.txt");
        BufferedReader br = new BufferedReader(fileReader);

        ArrayList<String> arraylist = readingfile(br);

        //System.out.println(arraylist);
        makingfiles(br, arraylist);

    }

    public static void makingfiles(BufferedReader br, ArrayList<String> arraylist) throws IOException {
        int start = 0;
        int end = 15000;

        for(int i = 0; i < 20; i++) {
            File file = new File("/Users/domlanza/desktop/testing/Filee"+i+".txt");
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);
            for(;start <= end; start++){
                bw.write(arraylist.get(start));
                bw.newLine();
            }
            bw.flush();
            bw.close();
            fw.close();
            start = end + 1;
            end += 15000;
        }
    }

    public static ArrayList<String> readingfile(BufferedReader br) throws FileNotFoundException, IOException {
        //Read in file

        Scanner s = new Scanner(new File("Aesop_Shakespeare_Shelley_Twain.txt"));
        int count = 0;
        ArrayList<String> arraylist = new ArrayList<String>();

            while (s.hasNext()) {
                count++;
                arraylist.add(s.nextLine());

            }




        //} catch (IOException e) {e.printStackTrace();}
        Collections.sort(arraylist);
        //System.out.println(arraylist);
        return arraylist;
        }
}

如有任何帮助,我们将不胜感激。逗号只是正在排序的文件......................

“看起来你的帖子主要是代码”

最佳答案

您需要创建一个子列表列表,其中每个子列表包含 15000 行。完整代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

public class BigFileSorter {

    public static final int NUM_LINES = 15000;
    public static final int NUM_FILES = 20;
    public static void main(String args[]) throws IOException {

        FileReader fileReader = new FileReader("file.txt");
        BufferedReader br = new BufferedReader(fileReader);

        ArrayList<ArrayList<String>> list = readingfile(br);
        makingfiles(br, list);

    }

    public static void makingfiles(BufferedReader br, ArrayList<ArrayList<String>> list) throws IOException {
        if (list != null) {
            for (int i = 0; i < NUM_FILES; i++) {
                File file = new File("Filee" + i + ".txt");
                FileWriter fw = new FileWriter(file);
                ArrayList<String> subList = list.get(i);
                for (String str : subList) {
                    fw.write(str + System.lineSeparator());
                }
                fw.close();
            }
        }
    }

    public static ArrayList<ArrayList<String>> readingfile(BufferedReader br)
            throws FileNotFoundException, IOException {
        ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
        ArrayList<String> subList;
        String line;
        try {
            for (int i = 0; i < NUM_FILES; i++) {
                subList = new ArrayList<String>();
                for (int j = 0; j < NUM_LINES; j++) {
                    line = br.readLine();
                    if (line == null) {
                        break;
                    }
                    subList.add(line);
                }
                Collections.sort(subList);
                list.add(subList);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            br.close();
        }
        return list;
    }
}

如有任何疑问,请随时发表评论。

关于java - 无法将 txt 文件复制到 arraylist 并复制到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59230697/

相关文章:

java - 我如何更改此方法以使用 ArrayList?

java - Spring Cacheable vs CachePut?

java - 使用 joda-time 解析包含时区的日期字符串

jquery - 使用 jQuery 单击父 div 时打开文件对话框

ajax - 在 AJAX 中处理 servlet 输出

java - 使用 ArrayList 的 ArrayAdapter

java - Recycleviewer - 如何重用布局?

java - TypeToken 嵌套泛型类型的意外泛型行为

ios - 在 iOS 中关联我的应用程序的自定义文件

php - 使用 php 从文本文件中获取最后 50 行