public void initialiseMerge( String folderPath, String filename, String finalfile, String tableName, TOrderByItemList tOrderByItemList, HashMap<String, Integer> hmp) { int i, j; String[] dataLines = new String[fragments]; // Integer[] hash = new Integer[fragments]; String min, temp; int result; int minIndex = 0; Iterator<Integer> itr; Set<Integer> set = new LinkedHashSet<Integer>(); FileReader[] file = new FileReader[fragments]; File[] del = new File[fragments]; // System.out.println("-------------"+fragments); try { FileWriter fd = new FileWriter(folderPath + "/" + finalfile); BufferedWriter bd = new BufferedWriter(fd); BufferedReader[] reader = new BufferedReader[totalFiles]; for (i = 0; i < fragments; i++) { set.add(i); file[i] = new FileReader(folderPath + "/" + filename + Integer.toString(i)); del[i] = new File(folderPath + "/" + filename + Integer.toString(i)); reader[i] = new BufferedReader(file[i]); dataLines[i] = reader[i].readLine(); } // find minimum among all of them while (!set.isEmpty()) { itr = set.iterator(); i = itr.next(); j = 0; while (dataLines[i].charAt(j) != ',') j++; // System.out.println("below 1while"); min = dataLines[i]; minIndex = i; // System.out.println("above while"); while (itr.hasNext()) { i = itr.next(); temp = dataLines[i]; result = Main.compareRecords(tableName, min, temp, tOrderByItemList, hmp); if (result > 0) { minIndex = i; min = dataLines[i]; } } // System.out.println("min:"+dataLines[minIndex]); bd.write(dataLines[minIndex] + "\n"); // System.out.println("Gonna Write:"+dataLines[minIndex]+"\n"); dataLines[minIndex] = reader[minIndex].readLine(); if (dataLines[minIndex] == null) { set.remove(minIndex); del[minIndex].delete(); } } bd.close(); fd.close(); // for(i = 0; i < fragments;i++) // reader[minIndex].close(); } catch (Exception e) { System.out.println("Except" + e); } }