जावा फाइलों को पढ़ने के लिए कई तरीके प्रदान करता है। इनमें से प्रत्येक विधि विभिन्न स्थितियों में विभिन्न प्रकार की फाइलों को पढ़ने के लिए उपयुक्त है। कुछ लंबी फ़ाइलों को पढ़ने के लिए बेहतर हैं, अन्य छोटी फ़ाइलों को पढ़ने के लिए बेहतर हैं, आदि।
इस ट्यूटोरियल में, हम फाइलों को पढ़ने के लिए निम्नलिखित जावा क्लासेस का उपयोग करेंगे
- बफ़र्ड रीडर
- फ़ाइलें
- स्कैनर
पूरे ट्यूटोरियल के दौरान, हम src
. में संग्रहीत फ़ाइल का उपयोग कर रहे हैं निर्देशिका जहां फ़ाइल का पथ src/file.txt
. है ।
आगे बढ़ने से पहले इस फ़ाइल में पाठ की कई पंक्तियाँ संग्रहीत करें।
नोट:सर्वोत्तम कोडिंग प्रथाओं से चिपके रहने के लिए आपको इन कार्यान्वयनों का उपयोग करते समय त्रुटियों को ठीक से संभालना होगा।बफ़रेड रीडर के साथ जावा में टेक्स्ट फ़ाइलें पढ़ना
BufferedReader
कक्षा एक चरित्र-इनपुट स्ट्रीम पढ़ता है। यह पढ़ने की प्रक्रिया को और अधिक कुशल बनाने के लिए 8 KB के डिफ़ॉल्ट आकार के साथ एक बफर में वर्णों को बफ़र करता है। यदि आप किसी फ़ाइल को पंक्ति दर पंक्ति पढ़ना चाहते हैं, तो BufferedReader का उपयोग करना एक अच्छा विकल्प है।
BufferedReader
बड़ी फ़ाइलों को पढ़ने में कुशल है।
import java.io.*;
public class FileReaderWithBufferedReader {
public static void main(String[] args) throws IOException{We
String file = "src/file.txt";
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String curLine;
while ((curLine = bufferedReader.readLine()) != null){
//process the line as required
System.out.println(curLine);
}
bufferedReader.close();
}
}
readline()
फ़ाइल के अंत तक पहुंचने पर विधि शून्य हो जाती है।
बफ़रेडर के साथ जावा में UTF-8 एन्कोडेड फ़ाइल पढ़ना
हम BufferedReader
. का उपयोग कर सकते हैं UTF-8 एन्कोडेड फ़ाइल पढ़ने के लिए कक्षा।
इस बार, हम एक InputStreamReader
pass पास करते हैं BufferedReader
creating बनाते समय वस्तु उदाहरण।
import java.io.*;
public class EncodedFileReaderWithBufferedReader {
public static void main(String[] args) throws IOException {
String file = "src/fileUtf8.txt";
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String curLine;
while ((curLine = bufferedReader.readLine()) != null){
//process the line as you require
System.out.println(curLine);
}
}
}
फ़ाइल पढ़ने के लिए Java Files Class का उपयोग करना
जावा Files
जावा एनआईओ में जावा 7 में पेश किया गया वर्ग, फाइलों पर चलने वाली स्थिर विधियों से युक्त है।
Files
का उपयोग करना वर्ग, आप किसी फ़ाइल की पूरी सामग्री को एक सरणी में पढ़ सकते हैं। यह छोटी फ़ाइलों को पढ़ने के लिए इसे एक अच्छा विकल्प बनाता है।
आइए देखें कि हम इन दोनों परिदृश्यों में Files वर्ग का उपयोग कैसे कर सकते हैं।
फ़ाइल वर्ग के साथ जावा में छोटी फ़ाइलें पढ़ना
readAllLines()
Files
. की विधि वर्ग फ़ाइल की संपूर्ण सामग्री को पढ़ने की अनुमति देता है और प्रत्येक पंक्ति को एक सरणी में स्ट्रिंग के रूप में संग्रहीत करता है।
आप Path
का उपयोग कर सकते हैं Files
. के बाद से फ़ाइल का पथ प्राप्त करने के लिए class वर्ग Path
स्वीकार करता है फ़ाइल का उद्देश्य।
import java.io.IOException;
import java.nio.file.*;
import java.util.*;
public class SmallFileReaderWithFiles {
public static void main(String[] args) throws IOException {
String file = "src/file.txt";
Path path = Paths.get(file);
List<String> lines = Files.readAllLines(path);
}
}
आप readAllBytes()
का उपयोग कर सकते हैं फ़ाइल में संग्रहीत डेटा को स्ट्रिंग सरणी के बजाय बाइट सरणी में पुनर्प्राप्त करने के लिए।
byte[] bytes = Files.readAllBytes(path);
फ़ाइल वर्ग के साथ जावा में बड़ी फ़ाइलें पढ़ना
अगर आप Files
. के साथ एक बड़ी फ़ाइल पढ़ना चाहते हैं वर्ग, आप newBufferedReader()
. का उपयोग कर सकते हैं BufferedReader
. का उदाहरण प्राप्त करने की विधि एक BufferedReader
. का उपयोग करके फ़ाइल को लाइन दर पंक्ति पढ़ें और क्लास करें ।
import java.io.*;
import java.nio.file.*;
public class LargeFileReaderWithFiles {
public static void main(String[] args) throws IOException {
String file = "src/file.txt";
Path path = Paths.get(file);
BufferedReader bufferedReader = Files.newBufferedReader(path);
String curLine;
while ((curLine = bufferedReader.readLine()) != null){
System.out.println(curLine);
}
bufferedReader.close();
}
}
Files.lines के साथ फ़ाइलें पढ़ना ()
जावा 8 ने फाइल क्लास में पूरी फाइल को Stream
में पढ़ने के लिए एक नया तरीका पेश किया है तार की।
import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;
public class FileReaderWithFilesLines {
public static void main(String[] args) throws IOException {
String file = "src/file.txt";
Path path = Paths.get(file);
Stream<String> lines = Files.lines(path);
lines.forEach(s -> System.out.println(s));
lines.close();
}
}
स्कैनर के साथ जावा में टेक्स्ट फ़ाइलें पढ़ना
Scanner
वर्ग किसी दिए गए सीमांकक का उपयोग करके फ़ाइल की सामग्री को भागों में तोड़ता है और इसे भाग-दर-भाग पढ़ता है। यह दृष्टिकोण एक सीमांकक द्वारा अलग की गई सामग्री को पढ़ने के लिए सबसे उपयुक्त है।
उदाहरण के लिए, Scanner
वर्ग सफेद रिक्त स्थान से अलग किए गए पूर्णांकों की सूची या अल्पविराम द्वारा अलग किए गए तारों की सूची पढ़ने के लिए आदर्श है।
Scanner
. का डिफ़ॉल्ट डिलीमीटर वर्ग सफेद जगह है। लेकिन आप सीमांकक को किसी अन्य वर्ण या रेगुलर एक्सप्रेशन पर सेट कर सकते हैं। इसके कई अगले तरीके भी हैं, जैसे next()
, nextInt()
, nextLine()
, और nextByte()
, सामग्री को विभिन्न प्रकारों में बदलने के लिए।
import java.io.IOException;
import java.util.Scanner;
import java.io.File;
public class FileReaderWithScanner {
public static void main(String[] args) throws IOException{
String file = "src/file.txt";
Scanner scanner = new Scanner(new File(file));
scanner.useDelimiter(" ");
while(scanner.hasNext()){
String next = scanner.next();
System.out.println(next);
}
scanner.close();
}
}
उपरोक्त उदाहरण में, हम सीमांकक को व्हाइटस्पेस पर सेट करते हैं और next()
. का उपयोग करते हैं व्हाइटस्पेस द्वारा अलग की गई सामग्री के अगले भाग को पढ़ने की विधि।
एक संपूर्ण फ़ाइल पढ़ना
आप Scanner
का उपयोग कर सकते हैं बिना लूप चलाए पूरी फाइल को एक बार में पढ़ने के लिए क्लास। आपको “\\Z”
. पास करना होगा इसके लिए सीमांकक के रूप में।
scanner.useDelimiter("\\Z");
System.out.println(scanner.next());
scanner.close();
नोट:स्कैनर वर्ग सिंक्रनाइज़ नहीं है और इसलिए, थ्रेड-सुरक्षित नहीं है। निष्कर्ष
जैसा कि आपने इस ट्यूटोरियल में देखा, जावा कई विधियाँ प्रदान करता है जिन्हें आप टेक्स्ट फ़ाइलों को पढ़ने के लिए अपने हाथ में कार्य की प्रकृति के अनुसार चुन सकते हैं। आप BufferedReader
. का उपयोग कर सकते हैं बड़ी फ़ाइलों को पंक्ति दर पंक्ति पढ़ने के लिए।
यदि आप किसी ऐसी फ़ाइल को पढ़ना चाहते हैं जिसकी सामग्री एक सीमांकक द्वारा अलग की गई है, तो Scanner
का उपयोग करें कक्षा।
इसके अलावा आप Java NIO Files
. का उपयोग कर सकते हैं छोटी और बड़ी दोनों फाइलों को पढ़ने के लिए कक्षा।