Last active
December 7, 2022 09:56
-
-
Save Marconymous/54b0f168ed7fa4091c0b11f74d283e55 to your computer and use it in GitHub Desktop.
Java CSV Import / Export Implementation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.File; | |
import java.io.FileWriter; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Scanner; | |
public class CSVFileHandler<T extends CSVFileHandler.CSVSerializable<? extends T>> { | |
public interface CSVSerializable<T> { | |
String toCSV(char delimiter); | |
String getCSVHeader(char delimiter); | |
T fromCSV(String[] csv); | |
} | |
public List<T> read(String fileName, char delimiter, T object) { | |
var file = new File(fileName); | |
System.out.println("Reading from file: " + file.getAbsolutePath()); | |
try { | |
var scanner = new Scanner(file); | |
scanner.nextLine(); | |
ArrayList<T> objs = new ArrayList<>(); | |
while (scanner.hasNextLine()) { | |
var line = scanner.nextLine(); | |
System.out.println("Read Line: " + line); | |
var values = line.split(String.valueOf(delimiter)); | |
var newObj = object.fromCSV(values); | |
objs.add(newObj); | |
} | |
return objs; | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
return null; | |
} | |
public void write(String fileName, char delimiter, T[] objects) { | |
write(fileName, delimiter, List.of(objects)); | |
} | |
public void write(String fileName, char delimiter, List<T> objects) { | |
var file = new File(fileName); | |
System.out.println("Writing to file: " + file.getAbsolutePath()); | |
try { | |
var writer = new FileWriter(file); | |
writer.append(objects.get(0).getCSVHeader(delimiter)).append(System.lineSeparator()); | |
for (var obj : objects) { | |
var values = obj.toCSV(delimiter); | |
writer.append(values).append(System.lineSeparator()); | |
} | |
writer.flush(); | |
writer.close(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment