के लिए अच्छा और प्रभावी सीएसवी/टीएसवी रीडर मैं 1000000
पंक्तियों या उससे अधिक के साथ बड़े CSV
और TSV
(टैब सेपरेटेड) फ़ाइलों को पढ़ने की कोशिश कर रहा हूं। अब मैंने ~2500000
लाइनों को opencsv
के साथ पढ़ने की कोशिश की, लेकिन यह मुझे java.lang.NullPointerException
फेंकता है। यह ~250000
लाइनों वाली छोटी TSV
फ़ाइलों के साथ काम करता है। तो मैं सोच रहा था कि क्या कोई अन्य Libraries
है जो विशाल CSV
और TSV
फ़ाइलों के पढ़ने का समर्थन करता है। आपके पास कोई विचार है?जावा
हर कोई जो मेरी कोड में रुचि रखता है (मैं इसे छोटा है, तो जाहिर है Try-Catch
अमान्य है):
InputStreamReader in = null;
CSVReader reader = null;
try {
in = this.replaceBackSlashes();
reader = new CSVReader(in, this.seperator, '\"', this.offset);
ret = reader.readAll();
} finally {
try {
reader.close();
}
}
संपादित करें:
private InputStreamReader replaceBackSlashes() throws Exception {
FileInputStream fis = null;
Scanner in = null;
try {
fis = new FileInputStream(this.csvFile);
in = new Scanner(fis, this.encoding);
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (in.hasNext()) {
String nextLine = in.nextLine().replace("\\", "/");
// nextLine = nextLine.replaceAll(" ", "");
nextLine = nextLine.replaceAll("'", "");
out.write(nextLine.getBytes());
out.write("\n".getBytes());
}
return new InputStreamReader(new ByteArrayInputStream(out.toByteArray()));
} catch (Exception e) {
in.close();
fis.close();
this.logger.error("Problem at replaceBackSlashes", e);
}
throw new Exception();
}
बुफर्ड रीडर के लिए धन्यवाद क्यों नहीं पढ़ते? –
असल में मैं अच्छी तरह से तैयार किया गया था, सामान्य इस्तेमाल किया कोड और मैं पहिया को फिर से शुरू नहीं करना चाहता, असल में यही कारण है कि हर कोई libs का उपयोग कर रहा है। लेकिन अगर कुछ भी काम नहीं कर रहा है, तो मैं ऐसा करूँगा। – Robin
उन कई पंक्तियों के साथ मैं बैच में फ़ाइल को संसाधित करने में देखता हूं: फ़ाइल से एन लाइनें पढ़ें, सीएसवी के साथ प्रक्रिया करें, अगले बैच आदि पढ़ें। – opi