数字数据文件排序写问题

时间:2017-02-03 19:10:58

标签: java arrays

我有一个包含条目的数据文件(每行5个数字:

8,1,3,7,9 
2,4,7,10,11 
9,99,4,7,3 
5,1,2,3,17

完整的数据文件非常大,但始终有类似的数据 我试图从输入文件中逐行读取数据, 对该行上的数字进行排序,
然后将已排序的数字写入新的输出文件。

我不想将整个输入文件存储到数组或内存中,而是只存储每行的数字,一次存储一行,对其进行排序,并将这些已排序的数字写入输出文件的下一行。我已经提出了一种初始方法来读取和写入较小的数据集到另一个文件,但是它编写的数组出现在大括号中,例如[ 1, 3, 7, 8, 9]而不是1, 3, 7, 8, 9。当我弄清楚正确,更有效的方法是什么时,我还计划为分类创建一个单独的类,并且一次从数据文件中读取一行,将其传递给单独的类,该类将对其进行排序。将其写入输出数据文件。如何正确地将每一行一次输入到数组中,对其进行排序,并将其写入新的输出数据文件?

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;

    public class Soup {
    public static void main(String[] args) throws IOException {
        File dir = new File(".");

        String source = dir.getCanonicalPath() + File.separator + "Code.txt";
        String dest = dir.getCanonicalPath() + File.separator + "Dest.txt";

        File fin = new File(source);
        FileInputStream fis = new FileInputStream(fin);
        BufferedReader in = new BufferedReader(new InputStreamReader(fis));

        FileWriter fstream = new FileWriter(dest, true);
        BufferedWriter out = new BufferedWriter(fstream);

        String aLine = null;
        while ((aLine = in.readLine()) != null) {
            //Process each line and add output to Dest.txt file
            //Arrays.sort(aLine);

            String[] strings = aLine.split(",");
            int[] numbers = new int[strings.length];

            for (int i=0; i < numbers.length; i++)
            {
              numbers[i] = Integer.parseInt(strings[i]);


            }
            Arrays.sort(numbers);

            System.out.println(Arrays.toString(numbers));



            //for(int k=0; k < numbers.length; k++)
                //out.writeObject(numbers[k]);


            //out.write(aLine);
            out.write(Arrays.toString(numbers));
            //out.write(numbers
            //out.write((numbers));
            out.newLine();
        }

        // do not forget to close the buffer reader
        in.close();

        // close buffer writer
        out.close();

2 个答案:

答案 0 :(得分:1)

您的Arrays.toString(数字)添加括号。只需将括号替换为空字符串,然后再将其写入文件 -

out.write(Arrays.toString(numbers).replaceAll("\[|\]", ""));

答案 1 :(得分:0)

 out.write(Arrays.toString(numbers).replaceAll("\[|\]", ""));    does not work, error:    at java.lang.String.replaceAll(Unknown Source)

此外,我正在尝试找出一种更好的执行排序和写入任务的方法,我确信我的代码效率不高,并且正在寻找一种更有效的方法来完成任务。我愿意接受建议。