कॉमन्स या गुवा पुस्तकालयों का उपयोग करके टेक्स्ट की प्रत्येक पंक्ति (टेक्स्ट फ़ाइल से) को लिंक्डलिस्ट (स्ट्रिंग ऑब्जेक्ट के रूप में) या किसी अन्य संग्रह में रखने का सबसे शानदार तरीका क्या है।कॉमन्स या गुवा का उपयोग कर जावा सूची <String> में टेक्स्ट फ़ाइल
उत्तर
यहाँ कैसे करना है जो खोज यह Guava के साथ:
List<String> lines = Files.readLines(new File("myfile.txt"), Charsets.UTF_8);
संदर्भ:
Apache Commons IO का उपयोग करके, आप FileUtils#readLines
विधि का उपयोग कर सकते हैं। यह रूप में सरल है के रूप में:
List<String> lines = FileUtils.readLines(new File("..."));
for (String line : lines) {
System.out.println(line);
}
यह शायद है आप
org.apache.commons.io.FileUtils का उपयोग कर
FileUtils.readLines(new File("file.txt"));
आप अमरूद का उपयोग कर सकते हैं:
Files.readLines(new File("myfile.txt"), Charsets.UTF_8);
या Apache Commons कब:
FileUtils.readLines(new File("myfile.txt"));
मैं कहेंगे दोनों समान रूप से सुंदर हैं।
आपके सटीक उपयोग के आधार पर, "डिफ़ॉल्ट एन्कोडिंग" मानना एक अच्छा विचार हो सकता है या नहीं। किसी भी तरह से, व्यक्तिगत रूप से मुझे यह अच्छा लगता है कि गुवा एपीआई यह स्पष्ट करता है कि आप फ़ाइल के एन्कोडिंग के बारे में धारणा बना रहे हैं।
अद्यतन: जावा 7 अब यह निर्मित है: Files.readAllLines(Path path, Charset cs)। और वहां भी आपको स्पष्ट रूप से वर्णमाला निर्दिष्ट करना होगा।
वे बहुत समान हैं, कॉमन्स आईओ के साथ यह इस तरह दिखेगा:
List<String> lines = FileUtils.readLines(new File("file.txt"), "UTF-8");
अमरूद का मुख्य लाभ चारसेट के विनिर्देश है (टाइप की कोई गलती):
List<String> lines = Files.readLines(new File("file.txt"), Charsets.UTF_8);
मैं सुनिश्चित नहीं है कि आप केवल यह जानना चाहते हैं कि यह कैसे Guava या Commons IO के माध्यम से करना है, लेकिन जावा 7 के बाद से यह java.nio.file.Files.readAllLines(Path path, Charset cs)
(javadoc) के माध्यम से किया जा सकता है।
List<String> allLines = Files.readAllLines(dir.toPath(), StandardCharsets.UTF_8);
इस के बाद से जावा SE का हिस्सा यह अपनी परियोजना के लिए किसी भी अतिरिक्त जार फ़ाइलें (अमरूद या कॉमन्स) जोड़ने के लिए आप की आवश्यकता नहीं है है।
'IOUtils.lineIterator' एक बेहतर विकल्प है क्योंकि यह पूरी फ़ाइल को स्मृति में लोड नहीं करता है। –