按升序和降序对文件内容进行排序

时间:2015-12-10 19:47:31

标签: java arrays collections

我想根据增加的时间戳和降低的严重性对下面的日志文件进行排序。下面是我的Input.txt,我想在另一个文件中写出输出。附上我的Java代码。请建议解决这个问题

[2015-11-19 10:33:54.934+0000] [HOST1] [INFO] [CLASS1] [MESSAGE1 something] 
[2015-11-19 10:31:55.128+0000] [HOST2] [ERROR] [CLASS2] [MESSAGE2 random] 
[2015-11-19 10:31:55.128+0000] [HOST3] [INFO] [CLASS6] [MESSAGE5 from another host] 
[2015-11-19 10:37:55.246+0000] [HOST2] [WARN] [CLASS9] [MESSAGE9 again] 


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

public class SortLogFile {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = null;
        PrintWriter outputStream = null;
        ArrayList<String> rows = new ArrayList<String>();
        try {
            reader = new BufferedReader(new FileReader("Input.txt"));
            outputStream = new PrintWriter(new FileWriter("Output.txt"));
            String file;
            while ((file = reader.readLine()) != null) {
                rows.add(file);
            }
            Collections.sort(rows);
            String[] strArr = rows.toArray(new String[0]);
            for (String cur : strArr)
                outputStream.println(cur);
        } finally {
            if (reader != null) {
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

创建一个表示每一行的类。该类必须具有两个属性(日期和严重性)。 对于严重性为1,使用带有值的枚举更好,因此可以进行比较。 将所有对象添加到列表中并对其进行排序。

REF     DATE        Cost
1       2015-10-15  120
1       2015-08-30  150
2       2015-09-11  280
3       2015-05-22  75
2       2015-03-08  -
2       2015-07-15  280
3       2015-11-14  80
1       2015-11-20  120