FilenameUtils ক্লাসটি অ্যাপাচি কমন্স আইও (Apache Commons IO) লাইব্রেরির একটি গুরুত্বপূর্ণ ক্লাস যা ফাইল নাম এবং পাথ সম্পর্কিত বিভিন্ন কাজকে সহজ করে তোলে। এটি ফাইল নামের এক্সটেনশন, পাথ থেকে ফাইল নাম বের করা, পাথের সেগমেন্ট চেক করা, এবং অন্যান্য বিভিন্ন কার্যকলাপের জন্য ইউটিলিটি মেথড সরবরাহ করে। FilenameUtils ব্যবহার করে ফাইল সম্পর্কিত কাজগুলো অনেক সহজ এবং দ্রুত করা যায়।
FilenameUtils ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
১. getExtension - ফাইলের এক্সটেনশন বের করা
এই মেথডটি ফাইলের এক্সটেনশন বের করার জন্য ব্যবহৃত হয়, যেমন .txt, .jpg, .java, ইত্যাদি।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class GetExtensionExample {
public static void main(String[] args) {
String fileName = "example.txt";
// ফাইল এক্সটেনশন পাওয়া
String extension = FilenameUtils.getExtension(fileName);
System.out.println("File extension: " + extension);
}
}
আউটপুট:
File extension: txt
২. getBaseName - ফাইল নাম থেকে এক্সটেনশন বাদ দিয়ে বেস নাম পাওয়া
এই মেথডটি ফাইলের এক্সটেনশন বাদ দিয়ে কেবল ফাইল নাম বের করতে ব্যবহৃত হয়।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class GetBaseNameExample {
public static void main(String[] args) {
String fileName = "example.txt";
// এক্সটেনশন বাদ দিয়ে বেস নাম পাওয়া
String baseName = FilenameUtils.getBaseName(fileName);
System.out.println("Base name: " + baseName);
}
}
আউটপুট:
Base name: example
৩. getName - ফাইল নামের পুরো নাম (পথ ছাড়া) বের করা
এই মেথডটি ফাইলের পাথ থেকে শুধু ফাইলের নাম বের করতে ব্যবহৃত হয়। এতে পুরো পাথের অংশ বাদ দিয়ে কেবল ফাইলের নাম রিটার্ন করে।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class GetNameExample {
public static void main(String[] args) {
String filePath = "/home/user/docs/example.txt";
// ফাইল পাথ থেকে কেবল ফাইল নাম পাওয়া
String fileName = FilenameUtils.getName(filePath);
System.out.println("File name: " + fileName);
}
}
আউটপুট:
File name: example.txt
৪. getFullPath - ফাইলের পূর্ণ পাথ বের করা
এই মেথডটি ফাইলের পাথ (ফোল্ডার সহ) বের করতে ব্যবহৃত হয়।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class GetFullPathExample {
public static void main(String[] args) {
String filePath = "/home/user/docs/example.txt";
// ফাইল পাথ থেকে ফাইলের পূর্ণ পাথ পাওয়া
String fullPath = FilenameUtils.getFullPath(filePath);
System.out.println("Full path: " + fullPath);
}
}
আউটপুট:
Full path: /home/user/docs/
৫. normalize - পাথকে স্বাভাবিক করা
এই মেথডটি একটি পাথকে normalize (মানে অতিরিক্ত স্ল্যাশ বা ডট দূর করে) করে। এটি পাথের মধ্যে থাকা .. এবং . এর মতো অংশও ঠিকভাবে হ্যান্ডেল করে।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class NormalizeExample {
public static void main(String[] args) {
String filePath = "/home/user/../docs/example.txt";
// পাথকে স্বাভাবিক করা
String normalizedPath = FilenameUtils.normalize(filePath);
System.out.println("Normalized path: " + normalizedPath);
}
}
আউটপুট:
Normalized path: /home/docs/example.txt
৬. concat - পাথের অংশগুলোকে একত্রিত করা
এই মেথডটি দুইটি পাথের অংশ (ফোল্ডার পাথ এবং ফাইল নাম) একত্রিত করে একটি পূর্ণ পাথ তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class ConcatExample {
public static void main(String[] args) {
String folderPath = "/home/user/docs";
String fileName = "example.txt";
// ফোল্ডার পাথ এবং ফাইল নাম একত্রিত করা
String fullPath = FilenameUtils.concat(folderPath, fileName);
System.out.println("Full path: " + fullPath);
}
}
আউটপুট:
Full path: /home/user/docs/example.txt
FilenameUtils এর অন্যান্য মেথড:
isExtension: একটি ফাইলের এক্সটেনশন চেক করা।separatorsToSystem: সিস্টেমের পাথ সেপারেটর অনুযায়ী সেপারেটর পরিবর্তন করা।getPath: পাথ থেকে শুধুমাত্র ফাইলের পাথ বের করা (ফাইল নাম ছাড়া)।
সারাংশ
FilenameUtils ক্লাস অ্যাপাচি কমন্স আইও লাইব্রেরির একটি শক্তিশালী এবং সহজে ব্যবহারযোগ্য টুল যা ফাইল নাম এবং পাথ সম্পর্কিত বিভিন্ন কাজ যেমন ফাইল এক্সটেনশন পাওয়া, বেস নাম পাওয়া, পাথ থেকে ফাইল নাম বের করা, পাথ স্বাভাবিক করা এবং পাথ অংশগুলো একত্রিত করার মতো কার্যক্রম সহজ করে তোলে। এটি ডেভেলপারদের জন্য ফাইল ব্যবস্থাপনার কাজকে অনেক সহজ এবং দ্রুত করে তোলে।
FilenameUtils অ্যাপাচি কমন্স আইও (Apache Commons IO) লাইব্রেরির একটি ক্লাস যা ফাইলের নাম এবং পাথ সম্পর্কিত বিভিন্ন সাধারণ কার্যক্রমকে সহজ করে তোলে। এটি ফাইল পাথ এবং নাম পরিচালনার জন্য বিভিন্ন ইউটিলিটি মেথড সরবরাহ করে, যেমন ফাইল এক্সটেনশন পাওয়া, পাথ সঠিকভাবে ফর্ম্যাট করা, ফাইলের নাম বিচ্ছিন্ন করা, এবং আরও অনেক কিছু।
এটি মূলত ফাইলের নাম এবং পাথ সম্পর্কিত সাধারণ কাজগুলোকে আরও সহজ এবং কার্যকরী করে তোলে, এবং ডেভেলপারদের জন্য কোডিংকে সহজতর করে দেয়।
FilenameUtils এর প্রধান মেথডসমূহ
FilenameUtils ক্লাসটি অ্যাপাচি কমন্স আইও লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, এবং এতে অনেক ইউটিলিটি মেথড থাকে যা ফাইল নাম এবং পাথ সংক্রান্ত বিভিন্ন কাজ দ্রুত সম্পাদন করতে সাহায্য করে।
১. getExtension(String filename)
এই মেথডটি একটি ফাইল নামের এক্সটেনশন বের করার জন্য ব্যবহৃত হয়। এটি ফাইল নাম থেকে তার এক্সটেনশন (যেমন .txt, .jpg, .png ইত্যাদি) আলাদা করে।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filename = "example.txt";
String extension = FilenameUtils.getExtension(filename);
System.out.println("File extension: " + extension); // Output: txt
}
}
২. getName(String filename)
এই মেথডটি একটি পূর্ণ পাথ বা ফাইল নাম থেকে শুধুমাত্র ফাইলের নাম বের করে, এক্সটেনশন ছাড়া।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filename = "/path/to/example.txt";
String name = FilenameUtils.getName(filename);
System.out.println("File name: " + name); // Output: example.txt
}
}
৩. getFullPath(String filename)
এই মেথডটি ফাইলের পূর্ণ পাথ (ডিরেক্টরি সহ) বের করে। এটি ফাইলের ডিরেক্টরি পাথটি সরিয়ে ফেলে।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filename = "/path/to/example.txt";
String fullPath = FilenameUtils.getFullPath(filename);
System.out.println("Full path: " + fullPath); // Output: /path/to/
}
}
৪. normalize(String filename)
এই মেথডটি পাথকে normalize (মানকরণ) করে, যেখানে বিভিন্ন ধরণের অপ্রয়োজনীয় পাথ সেগমেন্ট বা ডট (.) এবং ডবল ডট (..) সরিয়ে দেওয়া হয় এবং সঠিকভাবে পাথ ফরম্যাট করা হয়।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filename = "/path/to/../example.txt";
String normalizedPath = FilenameUtils.normalize(filename);
System.out.println("Normalized path: " + normalizedPath); // Output: /path/example.txt
}
}
৫. separatorsToSystem(String filename)
এই মেথডটি ফাইল পাথের মধ্যে সেপারেটর চরিত্র ("/" বা "\") সিস্টেমের পছন্দ অনুযায়ী পরিবর্তন করে। যেমন, উইন্ডোজে ব্যাকস্ল্যাশ ("\") এবং ইউনিক্স বা লিনাক্সে ফরওয়ার্ড স্ল্যাশ ("/") ব্যবহৃত হয়।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filename = "path/to/example.txt";
String systemSpecificPath = FilenameUtils.separatorsToSystem(filename);
System.out.println("System-specific path: " + systemSpecificPath);
}
}
৬. concat(String basePath, String fullFileName)
এই মেথডটি একটি বেস পাথ এবং ফাইল নামকে যুক্ত (concatenate) করে একটি পূর্ণ পাথ তৈরি করে।
উদাহরণ:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String basePath = "/path/to/";
String fileName = "example.txt";
String fullPath = FilenameUtils.concat(basePath, fileName);
System.out.println("Full path: " + fullPath); // Output: /path/to/example.txt
}
}
FilenameUtils এর উপকারিতা
- ফাইল পাথের কাজ সহজ করা: ফাইল নাম এবং পাথ সম্পর্কিত বিভিন্ন কাজ যেমন এক্সটেনশন বের করা, পাথ ফরম্যাট করা, ফাইলের নাম আলাদা করা ইত্যাদি সহজভাবে করা যায়।
- বিভিন্ন সিস্টেমের পাথ ফরম্যাট সাপোর্ট: উইন্ডোজ এবং ইউনিক্সের পাথ ফরম্যাটের মধ্যে পার্থক্য থাকলেও
FilenameUtilsক্লাস তা স্বয়ংক্রিয়ভাবে ম্যানেজ করে। - পারফরম্যান্স উন্নতি: এই ক্লাসটি ফাইল পাথ সম্পর্কিত কাজগুলো দ্রুত এবং কার্যকরীভাবে সম্পাদন করতে সাহায্য করে, যা ডেভেলপারদের জন্য সুবিধাজনক।
সারাংশ
FilenameUtils অ্যাপাচি কমন্স আইও লাইব্রেরির একটি শক্তিশালী ক্লাস যা ফাইল নাম এবং পাথ সম্পর্কিত বিভিন্ন সাধারণ কার্যক্রম যেমন এক্সটেনশন পাওয়া, পাথ ফরম্যাট করা, ফাইলের নাম এবং পাথ বিচ্ছিন্ন করা, এবং সিস্টেমের সেপারেটর অনুযায়ী পাথ কনভার্ট করা সহজ করে তোলে। এটি ডেভেলপারদের জন্য কোডিংকে অনেক সহজ এবং দ্রুততর করে তোলে।
Apache Commons IO লাইব্রেরির FilenameUtils ক্লাসটি ফাইলের এক্সটেনশন, নাম এবং পাথ সম্পর্কিত বিভিন্ন কাজ সহজ করে তোলে। এটি Java I/O অপারেশনগুলিতে ফাইলের নাম এবং এক্সটেনশন সম্পর্কিত কার্যকরী ফাংশন প্রদান করে, যা ফাইল ম্যানিপুলেশন করার সময় খুবই উপকারী। ফাইলের নাম এবং এক্সটেনশন বের করা সাধারণত ফাইল হ্যান্ডলিংয়ের জন্য গুরুত্বপূর্ণ, এবং FilenameUtils এর মেথডগুলো এই কাজগুলো দ্রুত এবং সঠিকভাবে করতে সাহায্য করে।
এই নিবন্ধে আমরা FilenameUtils ক্লাসের সাহায্যে ফাইলের এক্সটেনশন এবং নাম বের করার পদ্ধতি দেখব।
১. FilenameUtils ক্লাসের প্রধান মেথড
FilenameUtils ক্লাসটি org.apache.commons.io প্যাকেজের অংশ এবং এটি ফাইলের নাম, এক্সটেনশন এবং পাথ সম্পর্কিত কাজগুলো সহজ করে তোলে। এই ক্লাসে কিছু গুরুত্বপূর্ণ মেথড রয়েছে যেগুলির মাধ্যমে আপনি ফাইলের এক্সটেনশন এবং নাম বের করতে পারবেন।
১.১ ফাইলের এক্সটেনশন বের করা (Getting File Extension)
ফাইলের এক্সটেনশন বের করার জন্য getExtension() মেথড ব্যবহার করা হয়। এটি ফাইলের পাথ থেকে এক্সটেনশন রিটার্ন করে।
উদাহরণ: ফাইলের এক্সটেনশন বের করা
import org.apache.commons.io.FilenameUtils;
public class FileExtensionExample {
public static void main(String[] args) {
String filePath = "/home/user/documents/file.txt";
// Get file extension
String extension = FilenameUtils.getExtension(filePath);
System.out.println("File Extension: " + extension);
}
}
এখানে:
FilenameUtils.getExtension()মেথডটি ফাইলের এক্সটেনশন (txt) রিটার্ন করবে।
আউটপুট:
File Extension: txt
১.২ ফাইল নাম (এক্সটেনশন ছাড়া) বের করা (Getting File Name Without Extension)
getBaseName() মেথডটি ফাইলের নাম বের করতে ব্যবহৃত হয়, তবে এক্সটেনশন ছাড়া। এটি শুধুমাত্র ফাইল নাম রিটার্ন করে।
উদাহরণ: ফাইল নাম এক্সটেনশন ছাড়া বের করা
import org.apache.commons.io.FilenameUtils;
public class FileBaseNameExample {
public static void main(String[] args) {
String filePath = "/home/user/documents/file.txt";
// Get file name without extension
String baseName = FilenameUtils.getBaseName(filePath);
System.out.println("Base Name: " + baseName);
}
}
এখানে:
FilenameUtils.getBaseName()মেথডটি ফাইলের নাম (এখানেfile) এক্সটেনশন ছাড়া রিটার্ন করবে।
আউটপুট:
Base Name: file
১.৩ ফাইলের পাথ বের করা (Getting File Path)
ফাইলের পাথ (যতটুকু ডিরেক্টরি পর্যন্ত) বের করার জন্য getFullPath() মেথডটি ব্যবহার করা হয়।
উদাহরণ: ফাইলের পাথ বের করা
import org.apache.commons.io.FilenameUtils;
public class FilePathExample {
public static void main(String[] args) {
String filePath = "/home/user/documents/file.txt";
// Get file path
String path = FilenameUtils.getFullPath(filePath);
System.out.println("File Path: " + path);
}
}
এখানে:
FilenameUtils.getFullPath()মেথডটি ফাইলের পাথ (এখানে/home/user/documents/) রিটার্ন করবে।
আউটপুট:
File Path: /home/user/documents/
১.৪ ফাইলের পাথ এবং এক্সটেনশন একসাথে বের করা (Getting Full Path with Extension)
getFullPathExtension() মেথডটি ফাইলের পূর্ণ পাথ এবং এক্সটেনশন একসাথে রিটার্ন করে।
উদাহরণ: পাথ এবং এক্সটেনশন একসাথে বের করা
import org.apache.commons.io.FilenameUtils;
public class FullPathWithExtensionExample {
public static void main(String[] args) {
String filePath = "/home/user/documents/file.txt";
// Get full path with extension
String fullPathExtension = FilenameUtils.getFullPathExtension(filePath);
System.out.println("Full Path with Extension: " + fullPathExtension);
}
}
এখানে:
FilenameUtils.getFullPathExtension()মেথডটি ফাইলের পাথ এবং এক্সটেনশন সহ পূর্ণ পথ রিটার্ন করবে।
আউটপুট:
Full Path with Extension: /home/user/documents/file.txt
২. FilenameUtils এর অন্যান্য মেথড
getName(): একটি ফাইলের নাম এবং এক্সটেনশনসহ রিটার্ন করে।উদাহরণ:
String fileName = FilenameUtils.getName(filePath);isExtension(): ফাইলের এক্সটেনশন নির্দিষ্ট এক্সটেনশন সঙ্গতিপূর্ণ কিনা তা চেক করতে ব্যবহৃত হয়।উদাহরণ:
boolean isTxt = FilenameUtils.isExtension(filePath, "txt");normalize(): ফাইলের পাথকে সাধারণ এবং সঠিক ফর্ম্যাটে রূপান্তরিত করে।উদাহরণ:
String normalizedPath = FilenameUtils.normalize(filePath);
৩. FilenameUtils এর সুবিধা
- সহজ এবং কার্যকরী: ফাইলের এক্সটেনশন, নাম এবং পাথ বের করার কাজ খুবই সহজ করে তোলে।
- কমপ্যাক্ট কোড: কমপ্যাক্ট এবং পরিষ্কার কোড লেখার জন্য FilenameUtils এর মেথড ব্যবহার করা যায়।
- ফাইল হ্যান্ডলিংয়ে সহায়তা: ফাইল সম্পর্কিত কাজ যেমন এক্সটেনশন যাচাই, পাথ বের করা ইত্যাদি দ্রুত এবং নির্ভুলভাবে করতে সাহায্য করে।
৪. Apache Commons IO লাইব্রেরি ইনস্টলেশন
আপনি যদি Apache Commons IO ব্যবহার করতে চান, তবে আপনাকে এটি আপনার প্রোজেক্টে অন্তর্ভুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
এটি Apache Commons IO লাইব্রেরি আপনার প্রোজেক্টে যোগ করবে, যার মাধ্যমে আপনি FilenameUtils এবং অন্যান্য ফিচার ব্যবহার করতে পারবেন।
সারাংশ
Apache Commons IO লাইব্রেরির FilenameUtils ক্লাসটি ফাইলের নাম, এক্সটেনশন এবং পাথ সম্পর্কিত কাজগুলো সহজ এবং কার্যকরীভাবে সম্পাদন করতে সাহায্য করে। এটি ফাইলের এক্সটেনশন, নাম, পাথ বের করা, এবং পাথের সঠিক ফর্ম্যাট পাওয়া ইত্যাদি কাজগুলো সহজ করে তোলে। FilenameUtils ব্যবহার করে Java ফাইল ম্যানিপুলেশন আরও সুষম, দ্রুত এবং পরিষ্কার করা সম্ভব।
Apache Commons IO লাইব্রেরি Java I/O API এর বাইরের অতিরিক্ত কার্যকরী ফিচার সরবরাহ করে যা ফাইল এবং ডিরেক্টরি ম্যানিপুলেশনকে সহজ এবং কার্যকরী করে তোলে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হল ফাইলের পাথ ম্যানিপুলেশন (File Path Manipulation), যা আপনাকে ফাইল এবং ডিরেক্টরি পাথের উপর বিভিন্ন কার্যক্রম যেমন পাথ তৈরি, ফাইল এক্সটেনশন বের করা, পাথ সংযোজন, ফাইল নাম পরিবর্তন ইত্যাদি করার সুযোগ দেয়।
Apache Commons IO লাইব্রেরির FilenameUtils ক্লাসটি ফাইল পাথ ম্যানিপুলেশনের জন্য সবচেয়ে বেশি ব্যবহৃত হয়। এই ক্লাসের মাধ্যমে আপনি ফাইলের পাথ, এক্সটেনশন, পাথ তৈরি ইত্যাদি কাজগুলো দ্রুত এবং সহজভাবে করতে পারেন।
১. FilenameUtils ক্লাসের ভূমিকা
FilenameUtils হল একটি ক্লাস যা ফাইলের নাম এবং পাথ সম্পর্কিত বিভিন্ন কার্যক্রম পরিচালনা করে। এর মাধ্যমে আপনি ফাইলের পাথের সাথে বিভিন্ন কাজ করতে পারেন, যেমন:
- পাথ থেকে ফাইল এক্সটেনশন বের করা
- পাথ সংযোজন করা
- পাথ থেকে ফাইল নাম বের করা
- পাথের নির্দিষ্ট অংশ আলাদা করা
- পাথ সঠিকভাবে ফরম্যাট করা
২. FilenameUtils এর কিছু জনপ্রিয় মেথড
২.১. getExtension() - ফাইল এক্সটেনশন বের করা
getExtension() মেথডটি ফাইলের পাথ থেকে ফাইল এক্সটেনশন বের করে।
উদাহরণ: ফাইল এক্সটেনশন বের করা
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filePath = "path/to/file/document.txt";
// Get the file extension
String extension = FilenameUtils.getExtension(filePath);
System.out.println("File extension: " + extension); // Output: txt
}
}
এখানে:
FilenameUtils.getExtension()মেথডটি পাথ থেকে.txtএক্সটেনশন বের করেছে।
২.২. getName() - ফাইল নাম বের করা
getName() মেথডটি পাথ থেকে ফাইলের নাম বের করে (এক্সটেনশনসহ বা এক্সটেনশন ছাড়া)।
উদাহরণ: ফাইল নাম বের করা
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filePath = "path/to/file/document.txt";
// Get the file name with extension
String fileName = FilenameUtils.getName(filePath);
System.out.println("File name: " + fileName); // Output: document.txt
}
}
এখানে:
FilenameUtils.getName()মেথডটি পাথ থেকে ফাইলের নাম এবং এক্সটেনশনdocument.txtবের করেছে।
২.৩. concat() - পাথ সংযোজন করা
concat() মেথডটি একটি পাথের সাথে অন্য পাথ বা ফাইলের নাম যোগ করতে ব্যবহৃত হয়।
উদাহরণ: পাথ সংযোজন করা
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String basePath = "path/to/directory/";
String fileName = "document.txt";
// Concatenate directory path and file name
String fullPath = FilenameUtils.concat(basePath, fileName);
System.out.println("Full file path: " + fullPath); // Output: path/to/directory/document.txt
}
}
এখানে:
FilenameUtils.concat()মেথডটি পাথpath/to/directory/এর সাথেdocument.txtফাইলের নাম যোগ করেছে।
২.৪. getFullPath() - পাথের পূর্ণ ঠিকানা বের করা
getFullPath() মেথডটি ফাইলের পাথ থেকে ডিরেক্টরি পাথ বের করে, যা ফাইলের এক্সটেনশন ছাড়া পুরো পাথ দেয়।
উদাহরণ: পাথের পূর্ণ ঠিকানা বের করা
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filePath = "path/to/file/document.txt";
// Get the full path (directory) of the file
String directoryPath = FilenameUtils.getFullPath(filePath);
System.out.println("Directory path: " + directoryPath); // Output: path/to/file/
}
}
এখানে:
FilenameUtils.getFullPath()মেথডটি পাথpath/to/file/document.txtথেকে ডিরেক্টরি পাথpath/to/file/বের করেছে।
২.৫. normalize() - পাথকে সঠিক ফরম্যাটে পরিবর্তন করা
normalize() মেথডটি পাথের অতিরিক্ত স্ল্যাশ বা অন্য কোনো অস্বাভাবিক অংশগুলোকে সঠিকভাবে ফরম্যাট করে।
উদাহরণ: পাথের ফরম্যাট ঠিক করা
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsExample {
public static void main(String[] args) {
String filePath = "path/to/../file/document.txt";
// Normalize the path (remove redundant segments)
String normalizedPath = FilenameUtils.normalize(filePath);
System.out.println("Normalized path: " + normalizedPath); // Output: path/file/document.txt
}
}
এখানে:
FilenameUtils.normalize()মেথডটি পাথpath/to/../file/document.txtকেpath/file/document.txtএ রূপান্তরিত করেছে, অর্থাৎ অপ্রয়োজনীয় অংশ..সরিয়ে দিয়েছে।
৩. আরও ফিচার
৩.১. getPath() - পাথ থেকে ডিরেক্টরি বের করা
getPath() মেথডটি একটি পাথ থেকে ডিরেক্টরি পাথ বের করে।
৩.২. isExtension() - এক্সটেনশন চেক করা
isExtension() মেথডটি একটি ফাইলের এক্সটেনশন চেক করতে ব্যবহৃত হয়, যেমন এটি .txt কিনা।
৩.৩. separatorsToUnix() এবং separatorsToWindows()
এই মেথডগুলো পাথ সেপারেটরকে সংশ্লিষ্ট অপারেটিং সিস্টেমের জন্য মানানসই করে। উদাহরণস্বরূপ, Unix সিস্টেমে / ব্যবহার হয়, আর Windows সিস্টেমে \\ ব্যবহার হয়। এই মেথডগুলো সাহায্য করে পাথের সেপারেটর কনভার্ট করতে।
সারাংশ
Apache Commons IO - FilenameUtils ক্লাসটি ফাইল পাথ ম্যানিপুলেশনের জন্য একটি অত্যন্ত শক্তিশালী এবং কার্যকরী টুল। এর মাধ্যমে আপনি সহজেই ফাইল এক্সটেনশন বের করা, পাথ সংযোজন, পাথের ফরম্যাট ঠিক করা, এবং ডিরেক্টরি বা ফাইল নাম বের করার মতো কাজগুলো করতে পারেন। এই ফিচারগুলি Java ডেভেলপারদের ফাইল এবং ডিরেক্টরি ম্যানিপুলেশনকে আরও দ্রুত এবং কার্যকরীভাবে করতে সহায়তা করে, এবং কোড লেখার জটিলতা অনেক কমিয়ে দেয়।
Apache Commons IO লাইব্রেরি ফাইল এবং ডিরেক্টরি সম্পর্কিত কাজ সহজ এবং কার্যকরী করার জন্য অনেক শক্তিশালী ক্লাস সরবরাহ করে। এর মধ্যে দুটি গুরুত্বপূর্ণ কার্যাবলী হলো Filename Normalization এবং Path Matching। এগুলি ফাইল সিস্টেমে পাথের সঠিক এবং সামঞ্জস্যপূর্ণ ব্যবস্থাপনা নিশ্চিত করতে সহায়ক।
১. Filename Normalization
ফাইল নামের Normalization হল একটি প্রক্রিয়া যা ফাইল পাথের ফরম্যাটকে একটি নির্দিষ্ট স্ট্যান্ডার্ডে নিয়ে আসে। এটি বিভিন্ন ফাইল সিস্টেমের মধ্যে পার্থক্য (যেমন, Windows এবং Unix পাথের মধ্যে) দূর করে এবং relative paths এবং absolute paths এর মধ্যে সামঞ্জস্য নিশ্চিত করে।
Filename Normalization এর প্রয়োজনীয়তা:
- Multiple directory separators: বিভিন্ন অপারেটিং সিস্টেমে ডিরেক্টরি সেপারেটর আলাদা হতে পারে (যেমন, "/" Unix/MacOS এ এবং "" Windows এ)। ফাইল নামের Normalization এই পার্থক্যগুলো দূর করে।
- Redundant or relative paths: যেমন, "../" বা "./" এর ব্যবহারকে নির্দিষ্ট ফরম্যাটে রূপান্তর করা।
FilenameUtils.normalize() মেথড
FilenameUtils.normalize() মেথডটি ফাইল পাথকে নরমালাইজ করে, যেখানে relative paths, parent directories, এবং directory separators সঠিকভাবে সামঞ্জস্য করা হয়।
উদাহরণ: Filename Normalization
import org.apache.commons.io.FilenameUtils;
public class FilenameNormalizationExample {
public static void main(String[] args) {
String filePath = "C:\\Users\\John\\Documents\\..\\Desktop\\file.txt";
// Filename normalization
String normalizedPath = FilenameUtils.normalize(filePath);
System.out.println("Normalized Path: " + normalizedPath);
}
}
এখানে:
- FilenameUtils.normalize() ব্যবহার করা হয়েছে যাতে ডিরেক্টরি পার্থক্য (যেমন, "..\") সঠিকভাবে সমাধান হয়ে যায় এবং সঠিক ফাইল পাথ তৈরি হয়।
আউটপুট:
Normalized Path: C:\Users\John\Desktop\file.txt
এটি দেখায় কিভাবে normalize() মেথড "..\" এর মতো অবাঞ্ছিত অংশগুলো সরিয়ে সঠিক পাথ প্রদান করে।
২. Path Matching
Path Matching হল একটি প্রক্রিয়া যেখানে পাথের সাথে মেলানো বা তুলনা করা হয়, বিশেষত wildcards এর মাধ্যমে। এটি প্রধানত ফাইল সিস্টেমের মধ্যে ডিরেক্টরি বা ফাইল খুঁজতে বা ফিল্টার করতে ব্যবহৃত হয়।
Apache Commons IO Path Matching এর জন্য FilenameUtils ক্লাসের মধ্যে বিভিন্ন ইউটিলিটি মেথড সরবরাহ করে, যেমন wildcard matching এবং পাথের তুলনা।
FilenameUtils.wildcardMatch() এবং FilenameUtils.wildcardMatchOnSystem()
- wildcardMatch(): এটি একটি পাথকে একটি wildcard প্যাটার্নের সাথে মেলানোর জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি "*.txt" প্যাটার্নের মাধ্যমে সমস্ত .txt ফাইল খুঁজে পেতে পারেন।
- wildcardMatchOnSystem(): এটি একই কাজ করে, তবে সিস্টেম নির্ভর ডিরেক্টরি সেপারেটর ব্যবহার করে (অর্থাৎ, Windows এবং Unix এর মধ্যে পার্থক্য বোঝে)।
wildcardMatch() উদাহরণ: Path Matching Using Wildcards
import org.apache.commons.io.FilenameUtils;
public class PathMatchingExample {
public static void main(String[] args) {
String filePath = "C:\\Users\\John\\Documents\\file.txt";
// Wildcard matching to check if the file path ends with .txt
boolean isMatch = FilenameUtils.wildcardMatch(filePath, "*.txt");
System.out.println("Does the file match the pattern? " + isMatch); // Output: true
}
}
এখানে:
- FilenameUtils.wildcardMatch() মেথডটি ব্যবহার করা হয়েছে "*.txt" প্যাটার্নের মাধ্যমে ফাইলটির এক্সটেনশন মেলাতে।
আউটপুট:
Does the file match the pattern? true
wildcardMatchOnSystem() উদাহরণ: Path Matching with System-specific Separator
import org.apache.commons.io.FilenameUtils;
public class PathMatchingSystemExample {
public static void main(String[] args) {
String filePath = "C:/Users/John/Documents/file.txt";
// Matching using system-specific separator
boolean isMatch = FilenameUtils.wildcardMatchOnSystem(filePath, "*/*/*/file.txt");
System.out.println("Does the file match the pattern? " + isMatch); // Output: true
}
}
এখানে:
- FilenameUtils.wildcardMatchOnSystem() ব্যবহার করা হয়েছে যেখানে সিস্টেমের ডিরেক্টরি সেপারেটর (এখানে /, যা Unix এর জন্য) স্বয়ংক্রিয়ভাবে ব্যবহৃত হচ্ছে।
আউটপুট:
Does the file match the pattern? true
৩. Path Matching with Directory Walker
এছাড়া, DirectoryWalker ক্লাসও path matching এর জন্য ব্যবহৃত হতে পারে, যেখানে আপনি একটি ডিরেক্টরি এবং তার অন্তর্গত ফাইলগুলো রিকার্সিভভাবে সার্চ করতে পারেন এবং সেগুলোকে একটি wildcard প্যাটার্নের সাথে তুলনা করতে পারেন।
DirectoryWalker উদাহরণ: Wildcard Matching with Directory Traversing
import org.apache.commons.io.DirectoryWalker;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class DirectoryWalkerExample extends DirectoryWalker {
public static void main(String[] args) throws IOException {
File directory = new File("path/to/directory");
// Using DirectoryWalker to traverse the directory and match files with a wildcard
DirectoryWalker walker = new DirectoryWalker() {
@Override
protected boolean handleFile(File file, int depth, List<File> results) {
if (file.getName().endsWith(".txt")) {
System.out.println("Found .txt file: " + file.getName());
}
return true;
}
};
walker.walk(directory, null);
}
}
এখানে:
- DirectoryWalker ব্যবহার করা হয়েছে যাতে ডিরেক্টরি এবং তার সাবডিরেক্টরির মধ্যে wildcard matching করা যায়।
সারাংশ
Apache Commons IO লাইব্রেরির Filename Normalization এবং Path Matching ফিচারগুলো ফাইল সিস্টেমে পাথের ব্যবস্থাপনা সহজ এবং কার্যকরী করে তোলে। FilenameUtils.normalize() মেথডটি ফাইল পাথ নরমালাইজ করে, যা ডিরেক্টরি সেপারেটর এবং relative/absolute paths এর মধ্যে পার্থক্য দূর করে। wildcardMatch() এবং wildcardMatchOnSystem() মেথডগুলি পাথের সাথে মেলানো এবং wildcard matching এর জন্য ব্যবহৃত হয়। এগুলি ফাইল এবং ডিরেক্টরি সিস্টেমে কাজ করার সময় ডেভেলপারদের জন্য পারফেক্ট টুল।
Read more