2

I want to read all CSV files that are in one folder and then sort them by the Field named 'Name'.

What is the best way to do so?

input files example:

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

My Code so far:

    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 Answers 2

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
Sign up to request clarification or add additional context in comments.

Comments

0

For example you can wrap each line in

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

Next add all lines to

ArrayList<AddressLine> list;

And use

Collections.sort(list)

1 Comment

Sorry Sir, I don't understand, which way i can do it, array name field than sort by that??

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.