কম্পিউটার টিউটোরিয়াল

জাভাতে ফাইল রিডিং মাস্টার করুন: সম্পূর্ণ গাইড

জাভা ফাইল পড়ার জন্য একাধিক মেথড প্রদান করে। এই মেথডগুলোর প্রতিটি ভিন্ন পরিস্থিতিতে ভিন্ন টাইপের ফাইল পড়ার জন্য উপযুক্ত। কিছু বড় ফাইল পড়ার জন্য ভালো, অন্যগুলো ছোট ফাইল পড়ার জন্য ভালো।

এই টিউটোরিয়ালে, আমরা ফাইল পড়ার জন্য নিচের জাভা ক্লাসগুলো ব্যবহার করব:

  • BufferedReader
  • Files
  • Scanner

টিউটোরিয়াল 내내, আমরা src ডিরেক্টরিতে সংরক্ষিত একটি ফাইল ব্যবহার করব যার পাথ হল src/file.txt।

এগিয়ে যাওয়ার আগে এই ফাইলে কিছু লাইন টেক্সট সংরক্ষণ করুন।

নোট: এই ইমপ্লিমেন্টেশনগুলো ব্যবহার করার সময় এররগুলো সঠিকভাবে হ্যান্ডল করুন ভালো কোডিং প্র্যাকটিস মেনে চলতে।

BufferedReader দিয়ে জাভাতে টেক্সট ফাইল পড়া

BufferedReader ক্লাস একটি ক্যারেক্টার-ইনপুট স্ট্রিম পড়ে। এটি ৮ 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 দিয়ে জাভাতে 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-তে চালু করা হয়েছে, যা ফাইলগুলোর ওপর অপারেট করার-static মেথডগুলো নিয়ে গঠিত।

Files ক্লাস ব্যবহার করে, আপনি একটি ফাইলের সম্পূর্ণ কন্টেন্ট একটি অ্যারেতে পড়তে পারেন। এতে এটি ছোট ফাইল পড়ার জন্য একটি ভালো চয়েস।

আসুন দেখি উভয় সিনেরিওতে Files ক্লাস কীভাবে ব্যবহার করা যায়।

Files ক্লাস দিয়ে জাভাতে ছোট ফাইল পড়া

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 ক্লাস দিয়ে জাভাতে বড় ফাইল পড়া

যদি আপনি 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() দিয়ে ফাইল পড়া

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 দিয়ে জাভাতে টেক্সট ফাইল পড়া

Scanner ক্লাস একটি ফাইলের কন্টেন্টকে একটি দেয়া ডিলিমিটার ব্যবহার করে পার্টে ভাগ করে এবং পার্ট বাই পার্ট পড়ে। এই অ্যাপ্রোছ ডিলিমিটার দিয়ে সেপারেট করা কন্টেন্ট পড়ার জন্য সেরা।

উদাহরণস্বরূপ, Scanner ক্লাস হোয়াইটস্পেস দিয়ে সেপারেট করা ইন্টিজার লিস্ট বা কমা দিয়ে সেপারেট করা স্ট্রিং লিস্ট পড়ার জন্য আদর্শ।

Scanner ক্লাসের ডিফল্ট ডিলিমিটার হোয়াইটস্পেস। কিন্তু আপনি ডিলিমিটার অন্য ক্যারেক্টার বা রেগুলার এক্সপ্রেশনে সেট করতে পারেন। এতে ভিন্ন টাইপে কন্টেন্ট কনভার্ট করার জন্য next(), nextInt(), nextLine(), এবং nextByte() মতো ভিন্ন next মেথডও আছে।

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 ক্লাস সিঙ্ক্রোনাইজড নয় এবং তাই থ্রেড-সেফ নয়।

উপসংহার

এই টিউটোরিয়ালে আপনি দেখেছেন, জাভা অনেক মেথড অফার করে যেগুলো থেকে আপনি আপনার হাতের টাস্কের প্রকৃতির অনুযায়ী চয়েস করতে পারেন টেক্সট ফাইল পড়তে। বড় ফাইল লাইন বাই লাইন পড়তে আপনি BufferedReader ব্যবহার করতে পারেন।

যদি আপনি এমন একটি ফাইল পড়তে চান যার কন্টেন্ট ডিলিমিটার দিয়ে সেপারেট করা, তবে Scanner ক্লাস ব্যবহার করুন।

আরও Java NIO Files ক্লাস ব্যবহার করে ছোট এবং বড় দুটো ফাইল পড়তে পারেন।

  1. জাভাতে CSV ফাইল থেকে ডেটা পড়া

  2. জাভাতে প্রপার্টিজ ফাইল থেকে ডেটা পড়া

  3. রুবিতে ফাইল পড়া এবং লেখা: একটি স্টেপ-বাই-স্টেপ গাইড

  4. Windows 10 মেমরি ডাম্প ফাইল বিশ্লেষণ: ধাপে ধাপে সম্পূর্ণ গাইড