Java按字段排序CSV文件

时间:2014-02-07 15:01:50

标签: java sorting

我想阅读一个文件夹中的所有CSV文件,然后按名为“名称”的字段对它们进行排序。

最好的方法是什么?

输入文件示例:

File1:-

address,name,custnum
190 vikign,Cname,123455
1555 oakbroo,BName,123455
1234 sprint st,EName,123455

File2:- 

address,name,custnum
190 sprint,Wname,123455
1555 windy hill,AName,123455
1234 sprint st,BName,123455

One OutPut File like:-

address,name,custnum
1555 windy hill,AName,123455
1555 oakbroo,BName,123455
1234 sprint st,BName,123455
190 vikign,Cname,123455
1234 sprint st,EName,123455
190 sprint,Wname,123455

我的代码到目前为止:

    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.Arrays;
    import java.util.HashMap;
    import java.util.regex.Pattern;

    public class MoniLetterOwnmanSorting1 {

        /**
         * @param args
         */

        public static void delFileFromDir(String dirPath) {
            File dir = new File(dirPath);
            if (dir.listFiles() == null)
                return;
            for (File file : dir.listFiles()) {
                if (!file.isDirectory())
                    file.delete();
            }
        }

        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub

            BufferedReader br = null;
            BufferedWriter bfAll = null;

            File folder = new File("OwnmanFileIn");
            File[] BFFile = folder.listFiles();

            String count = "OwnmanFileOut\\" + "OwnmanFileSort.csv";
            bfAll = new BufferedWriter(new FileWriter(count));

            for (File file : BFFile) {

                br = new BufferedReader(new FileReader(file));

                String line;
                line = br.readLine();

                while((line = br.readLine()) != null) {

                    String[] actionID = line.split("\\,");

                    String name= actionID[1].replace("\"", "");

                    //PLEASE HELP ME!!

                }

            }

        }

    }

2 个答案:

答案 0 :(得分:1)

step 1 : create a class , like a bean class having fields as the columns of the CSV

step 2 : write getters and setters for when you need them

step 3 : read all your files and store every row in an object of the bean class

step 4 : create an arraylist of the bean class type and store all the bean objects i the arraylist

step 5 : write a comparator method for your bean class and sort it the way you want it

答案 1 :(得分:0)

例如,您可以在

中包装每一行

public class AddressLine implements Comparable<AddressLine> {
String address,name;
public AddressLine(String name ... //Constructor
public int compareTo(AddressLine another){
return name.compareTo(another.name);}

接下来将所有行添加到

ArrayList<AddressLine> list;

并使用

Collections.sort(list)