0
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;


public class part2
{

    @SuppressWarnings("resource")
    public static void main(String[] args) throws IOException
    {
        File f1 = new File("one.txt");
        File f2 = new File("two.txt");

        BufferedReader fr1 = null;
        BufferedReader fr2 = null;
        //BufferedReader fr3 = null;
        BufferedWriter fw = null;

        fr1 = new BufferedReader(new FileReader("one.txt"));
        fr2 = new BufferedReader(new FileReader("two.txt"));
        fw = new BufferedWriter(new FileWriter("res.txt"));


        String line1 = fr1.readLine();
        String line2 = fr2.readLine();


        // merging two files into one
        while (line1 != null)
        {
            fw.write(line1);
            fw.newLine();

            line1 = fr1.readLine();

        }

        while (line2 != null)
        {
            fw.write(line2);
            fw.newLine();

            line2= fr2.readLine();

        }
        fw.close();

        // sorting a new file 

        BufferedReader fr3 = null;
        BufferedWriter fw1 = null;

        fw1 = new BufferedWriter(new FileWriter("res1.txt"));
        fr3 = new BufferedReader(new FileReader("res.txt"));

        String line3 = fr3.readLine();

        ArrayList<String> lineList = new ArrayList<String>();
        while (line3 != null)
        {
            lineList.add(line3);
            line3 = fr3.readLine();
        }


        Collections.sort(lineList);

        for(int i=0; i<lineList.size(); i++)
        {
            fw1.write(lineList.get(i) + "\n");
            //line3 = fr3.readLine();

        }



      }
    }

2 つのファイルを "res.txt" にマージしてから、マージしたファイルをアルファベット順に並べ替えようとしています (並べ替えた行を "res1.txt" に入れます)。while (line3 != null) 行から正確に言うと、すべてがソートまで機能します。つまり、2 つのファイルを読み取ってマージしますが、ソートはしません。何か案は?

4

1 に答える 1

1

プログラムを終了する前に fw1 を閉じるか、バッファの内容がフラッシュされる前にメモリから削除されます。

于 2013-11-06T21:37:09.503 に答える