Advertisement
PaweU

java

Nov 12th, 2019
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.io.Reader;
  5. import java.util.HashMap;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. public class CSVReader<Stringbuilder> {
  11. BufferedReader reader;
  12. String delimiter;
  13. boolean hasHeader;
  14. String[]current;
  15. // nazwy kolumn w takiej kolejności, jak w pliku
  16. List<String> columnLabels = new ArrayList<>();
  17. // odwzorowanie: nazwa kolumny -> numer kolumny
  18. Map<String,Integer> columnLabelsToInt = new HashMap<>();
  19.  
  20. /**
  21. *
  22. * @param filename - nazwa pliku
  23. * @param delimiter - separator pól
  24. * @param hasHeader - czy plik ma wiersz nagłówkowy
  25. */
  26.  
  27. public CSVReader(String filename,String delimiter, boolean hasHeader) throws IOException {
  28. reader = new BufferedReader(new FileReader(filename));
  29. this.delimiter = delimiter;
  30. this.hasHeader = hasHeader;
  31. if(hasHeader)parseHeader();
  32. }
  33.  
  34. public CSVReader(String filename, String delimiter) throws IOException {
  35. this(filename, delimiter, false);
  36. }
  37.  
  38. public CSVReader(String filename) throws IOException {
  39. this(filename, ",", false);
  40. }
  41.  
  42. public CSVReader(Reader reader, String delimiter, boolean hasHeader) throws IOException {
  43. this.reader = new BufferedReader(reader);
  44. this.delimiter = delimiter;
  45. this.hasHeader = hasHeader;
  46. if(hasHeader)parseHeader();
  47. }
  48.  
  49. void parseHeader() throws IOException {
  50. // wczytaj wiersz
  51. String line = reader.readLine();
  52. if (line == null) {
  53. return;
  54. }
  55.  
  56. // podziel na pola
  57. String[] header = line.split(delimiter);
  58. // przetwarzaj dane w wierszu
  59. for (int i = 0; i < header.length; i++) {
  60. columnLabels.add(header[i]);
  61. columnLabelsToInt.put(header[i], i);
  62. }
  63. }
  64.  
  65. boolean next() throws IOException{
  66. String line = reader.readLine();
  67. if (line == null) {
  68. return false;
  69. }
  70. this.current = line.split(delimiter);
  71. return true;
  72. }
  73.  
  74. List<String> getColumnLabels() {
  75. return columnLabels;
  76. }
  77.  
  78. int getRecordLength() {
  79. return current.length;
  80. }
  81.  
  82. boolean isMissing(int columnIndex){
  83. if (current[columnIndex] == "") return true;
  84. return false;
  85. }
  86.  
  87. boolean isMissing(String columnLabel){
  88. if (current[columnLabelsToInt.get(columnLabel)] == "") return true;
  89. return false;
  90. }
  91.  
  92. String get(int columnIndex){
  93. return current[columnIndex];
  94. }
  95.  
  96. String get(String columnLabel){
  97. return current[columnLabelsToInt.get(columnLabel);
  98. }
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. public static void main(String[] args) throws IOException {
  106. CSVReader reader = new CSVReader("with-header.csv",",",true);
  107.  
  108. List<String> labels;
  109. labels = reader.getColumnLabels();
  110. for (String l : labels) System.out.println(l);
  111.  
  112. while(reader.next()){
  113. //System.out.printf(Locale.Us,"%d %s %d",id, name, fare);
  114. }
  115. }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement