Reputation: 33
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!!
}
}
}
}
Upvotes: 2
Views: 1961
Reputation: 2060
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)
Upvotes: 0
Reputation: 6617
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
Upvotes: 1