मेरे पास जावा में एक एप्लिकेशन है कि मैं एक फ़ाइल (बहुत बड़ा) पढ़ने के लिए openCSV का उपयोग कर रहा हूं। मैं फिर चौथा डाल रहा हूं (आखिरकार इसमें एक और कॉलम होगा या दो जोड़ा जाएगा यदि इससे कोई फर्क पड़ता है) कॉलम हैशसेट में और उसे एक नई फाइल में आउटपुट करना। यह सब ठीक काम करने लगता है लेकिन मुझे पता चला कि यह केवल फाइल का हिस्सा पढ़ रहा है (272, 9 48 की 131,544 लाइनें)। क्या यह सामान्य रूप से ओपनसीएसवी या जावा का एक सीमा है या इसके आसपास जाने का कोई तरीका है?openCSV मेरी पूरी फ़ाइल नहीं पढ़ रहा है
संदर्भ के लिए मेरे कोड:
public static void main(String[] args) throws IOException {
String itemsFile = new String();
String outFile = new String();
itemsFile = "items.txt";
outFile = "so.txt";
CSVReader reader = null;
try {
reader = new CSVReader(new FileReader(itemsFile), '\t');
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
String[] nextLine;
HashSet<String> brands = new HashSet<>();
while ((nextLine = reader.readNext()) != null) {
brands.add(nextLine[4]);
}
String[] brandArray = new String[brands.size()];
Iterator<String> it = ((HashSet<String>) brands).iterator();
int listNum = 0;
while (it.hasNext()) {
Object brand = (Object) it.next();
brandArray[listNum] = (String) brand;
listNum++;
}
CSVWriter writer = new CSVWriter(new FileWriter(outFile), '\n');
writer.writeNext(brandArray);
writer.close();
}
मैं माफी माँगता हूँ अगर मेरे कोड गन्दा है यह मेरी पहली असली "पूर्ण" जावा अनुप्रयोग है। किसी भी सहायता की बहुत सराहना की है।
मैं भी यकीन है कि यह कुछ चरित्र या कुछ और पर फांसी नहीं कर रहा है बनाने के लिए पाठ फ़ाइल से उन पंक्तियों को हटाने की कोशिश की है, लेकिन यह है कि लाइन पर बंद करने के लिए वैसे भी
क्या आपने यह समझने के लिए संग्रहों का आकार मुद्रित किया है कि क्या होता है? क्या आपने अपने प्रोग्राम में ब्रेकपॉइंट डालने की कोशिश की है जब यह अंतिम पठन रेखा तक पहुंचने के लिए पहुंचता है कि क्या wring जाता है? – assylias
इसके अलावा आप एक हैशसेट में आइटम जोड़ते हैं, जिसमें डुप्लिकेट नहीं हो सकते हैं। इसलिए यदि एक बार स्ट्रिंग को एक बार जोड़ा जाएगा तो इसे केवल एक बार जोड़ा जाएगा। यह हो रहा है कि क्या हो रहा है। ArrayList द्वारा हैशसेट को बदलें और देखें कि यह बेहतर काम करता है या नहीं। – assylias
@assylias मैंने एक Arraylist में बदलने की कोशिश की है, लेकिन मुझे एक ही परिणाम मिलता है। मैं हैशसेट का उपयोग कर रहा हूं क्योंकि मैं डुप्लीकेट नहीं चाहता हूं। मैंने यह पता लगाया कि लूप को काउंटर जोड़कर यह किस लाइन पर रुक गया है जो हैशसेट में मान जोड़ता है। मैं हालांकि ब्रेक प्वाइंट जोड़ने की कोशिश करूंगा और देखें कि क्या होता है। – Hirthas