Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में फाइल पढ़ने में मास्टरी: एक व्यापक गाइड

Java फाइल पढ़ने के लिए कई तरीके प्रदान करता है। इनमें से प्रत्येक तरीका अलग-अलग स्थितियों में अलग-अलग प्रकार की फाइल पढ़ने के लिए उपयुक्त है। कुछ लंबी फाइल पढ़ने के लिए बेहतर हैं, अन्य छोटी फाइलों के लिए बेहतर हैं, आदि।

इस ट्यूटोरियल में, हम फाइल पढ़ने के लिए निम्नलिखित Java क्लासेस का उपयोग करेंगे:

  • BufferedReader
  • Files
  • Scanner

पूरे ट्यूटोरियल में, हम src डायरेक्टरी में स्टोर की गई एक फाइल का उपयोग कर रहे हैं जहां फाइल का पथ src/file.txt है।

आगे बढ़ने से पहले इस फाइल में टेक्स्ट की कई लाइनें स्टोर करें।

नोट: इन कार्यान्वयन का उपयोग करते समय त्रुटियों को ठीक से संभालना सर्वोत्तम कोडिंग प्रथाओं का पालन करने के लिए आवश्यक है।

BufferedReader के साथ Java में टेक्स्ट फाइल पढ़ना

BufferedReader क्लास एक कैरेक्टर-इनपुट स्ट्रीम पढ़ती है। यह डिफ़ॉल्ट रूप से 8 KB आकार के बफर में कैरेक्टर्स को बफर करती है ताकि पढ़ने की प्रक्रिया को अधिक कुशल बनाया जा सके। यदि आप फाइल को लाइन दर लाइन पढ़ना चाहते हैं, तो BufferedReader का उपयोग करना एक अच्छा विकल्प है।

BufferedReader बड़ी फाइलों को पढ़ने में कुशल है।

import java.io.*; public class FileReaderWithBufferedReader { public static void main(String[] args) throws IOException{ String file = "src/file.txt"; BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); String curLine; while ((curLine = bufferedReader.readLine()) != null){ // आवश्यकतानुसार लाइन को प्रोसेस करें System.out.println(curLine); } bufferedReader.close(); } } 

readline() मेथड फाइल के अंत तक पहुंचने पर null लौटाता है।

नोट: पढ़ना समाप्त होने पर फाइल को बंद करना न भूलें।

BufferedReader के साथ Java में UTF-8 एन्कोडेड फाइल पढ़ना

हम BufferedReader क्लास का उपयोग UTF-8 एन्कोडेड फाइल पढ़ने के लिए कर सकते हैं।

इस बार, BufferedReader इंस्टेंस बनाते समय हम एक InputStreamReader ऑब्जेक्ट पास करते हैं।

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){ // आवश्यकतानुसार लाइन को प्रोसेस करें System.out.println(curLine); } } } 

फाइल पढ़ने के लिए Java Files क्लास का उपयोग करना

Java Files क्लास, Java 7 में Java NIO में पेश की गई, पूरी तरह से फाइलों पर काम करने वाले स्टेटिक मेथड्स से बनी है।

Files क्लास का उपयोग करके, आप फाइल की पूरी सामग्री को एक ऐरे में पढ़ सकते हैं। यह इसे छोटी फाइलें पढ़ने के लिए एक अच्छा विकल्प बनाता है।

आइए देखें कि हम Files क्लास का उपयोग दोनों परिदृश्यों में कैसे कर सकते हैं।

Files क्लास के साथ Java में छोटी फाइलें पढ़ना

Files क्लास का readAllLines() मेथड फाइल की पूरी सामग्री को पढ़ने और प्रत्येक लाइन को स्ट्रिंग्स के रूप में एक ऐरे में स्टोर करने की अनुमति देता है।

आप Path क्लास का उपयोग फाइल का पथ प्राप्त करने के लिए कर सकते हैं क्योंकि Files क्लास फाइल के 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 lines = Files.readAllLines(path); } } 

आप फाइल में स्टोर डेटा को स्ट्रिंग ऐरे के बजाय बाइट ऐरे में प्राप्त करने के लिए readAllBytes() का उपयोग कर सकते हैं।

byte[] bytes = Files.readAllBytes(path); 

Files क्लास के साथ Java में बड़ी फाइलें पढ़ना

यदि आप Files क्लास के साथ एक बड़ी फाइल पढ़ना चाहते हैं, तो आप BufferedReader क्लास का एक इंस्टेंस प्राप्त करने के लिए newBufferedReader() मेथड का उपयोग कर सकते हैं और 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() के साथ फाइलें पढ़ना

Java 8 ने Files क्लास में एक नया मेथड पेश किया जो पूरी फाइल को स्ट्रिंग्स के 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 lines = Files.lines(path); lines.forEach(s -> System.out.println(s)); lines.close(); } } 

Scanner के साथ Java में टेक्स्ट फाइल पढ़ना

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(); 

नोट: Scanner क्लास सिंक्रनाइज़्ड नहीं है और इसलिए, थ्रेड-सेफ नहीं है।

निष्कर्ष

जैसा कि आपने इस ट्यूटोरियल में देखा, Java कई तरीके प्रदान करता है जिन्हें आप हाथ में काम की प्रकृति के अनुसार टेक्स्ट फाइल पढ़ने के लिए चुन सकते हैं। आप बड़ी फाइलों को लाइन दर लाइन पढ़ने के लिए BufferedReader का उपयोग कर सकते हैं।

यदि आप ऐसी फाइल पढ़ना चाहते हैं जिसकी सामग्री डिलीमीटर द्वारा अलग की गई है, तो Scanner क्लास का उपयोग करें।

इसके अलावा आप Java NIO Files क्लास का उपयोग छोटी और बड़ी दोनों फाइलें पढ़ने के लिए कर सकते हैं।


  1. जावा में प्रॉपर्टीज़ फ़ाइल से डेटा कैसे पढ़ें? जावा में प्रॉपर्टीज़ फ़ाइल से डेटा कैसे पढ़ें?

    Properties Hashtable क्लास का एक सबक्लास है और यह प्रॉपर्टीज़ के एक स्थायी सेट को दर्शाता है। Properties को स्ट्रीम में सेव किया जा सकता है या स्ट्रीम से लोड किया जा सकता है। प्रॉपर्टी लिस्ट में प्रत्येक कुंजी और उसका संबंधित मान एक स्ट्रिंग है। Properties फ़ाइल का उपयोग जावा में कॉन्फ़िगरेशन को ए

  1. रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड

    आज आप सीखेंगे कि रूबी में फाइलें कैसे पढ़ें और लिखें ताकि आप सामग्री निकाल सकें, नई फाइलें बना सकें, और वह जानकारी ढूंढ सकें जिसकी आपको आवश्यकता है! यहां हम क्या कवर करने जा रहे हैं: विषयसूची1 रूबी में फाइलें कैसे पढ़ें2 रूबी में फाइल में कैसे लिखें3 रूबी फाइल मेथड्स4 डायरेक्टरी ऑपरेशन्स5 FileUtils

  1. विंडोज 10 मेमोरी डंप विश्लेषण मास्टर करें: चरण-दर-चरण गाइड विंडोज 10 मेमोरी डंप विश्लेषण मास्टर करें: चरण-दर-चरण गाइड

    यदि आपका PC हाल ही में क्रैश हुआ है, तो आपने ब्लू स्क्रीन ऑफ डेथ (BSOD) का सामना किया होगा, जो क्रैश का कारण सूचीबद्ध करता है और फिर PC अचानक बंद हो जाता है। BSOD स्क्रीन केवल कुछ सेकंड के लिए दिखाई देती है, और उस क्षण क्रैश के कारण का विश्लेषण करना संभव नहीं होता। शुक्र है, जब विंडोज क्रैश होता है,