हर जावा कार्यान्वयन मैं एक फ़ाइल से पढ़ने के देख में, मैं लगभग हमेशा लाइन द्वारा लाइन को पढ़ने के लिए प्रयोग किया जाता है एक फ़ाइल पाठक देखते हैं। मेरा विचार यह होगा कि यह बहुत अक्षम होगा क्योंकि इसे प्रति पंक्ति एक सिस्टम कॉल की आवश्यकता होती है।जावा - एक फ़ाइल से पढ़ना। इनपुट धारा बनाम पाठक
क्या मैं बजाय कर रहा था एक इनपुट स्ट्रीम का उपयोग और सीधे बाइट्स हड़पने के लिए है। मेरे प्रयोगों में, यह काफी तेज़ है। मेरा परीक्षण एक 1 एमबी फाइल थी।
Text length: 1054631, Total time: 9
Text length: 1034099, Total time: 22
तो, क्यों लोग धाराओं के बजाय पाठकों का उपयोग करते हैं:
//Stream method
try {
Long startTime = new Date().getTime();
InputStream is = new FileInputStream("test");
byte[] b = new byte[is.available()];
is.read(b);
String text = new String(b);
//System.out.println(text);
Long endTime = new Date().getTime();
System.out.println("Text length: " + text.length() + ", Total time: " + (endTime - startTime));
}
catch (Exception e) {
e.printStackTrace();
}
//Reader method
try {
Long startTime = new Date().getTime();
BufferedReader br = new BufferedReader(new FileReader("test"));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
String text = sb.toString();
Long endTime = new Date().getTime();
System.out.println("Text length: " + text.length() + ", Total time: " + (endTime - startTime));
}
catch (Exception e) {
e.printStackTrace();
}
इस का एक परिणाम देता है?
यदि मेरे पास कोई तरीका है जो एक टेक्स्ट फ़ाइल लेता है और एक स्ट्रिंग देता है जिसमें सभी पाठ होते हैं, तो क्या यह स्ट्रीम का उपयोग करके इसे बेहतर करना बेहतर है?
आपका कोड सही नहीं है। यह गारंटी नहीं है कि यह पूरी फाइल को पढ़ेगा, पढ़ने और उपलब्ध विधियों के दस्तावेज देखें। – Milo
क्या आपने [java.nio.File] पर अपने हाथों की कोशिश की थी (http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html) पैकेज की फ़ाइलें .readAllLines (.. ।) तरीका। –
+1 कुछ नया सीखने के लिए +1 – panny