1. Filesক্লাস

ফাইল ক্লাস

ফাইলগুলির সাথে কাজ করার জন্য, একটি চটকদার ইউটিলিটি ক্লাস রয়েছে — java.nio.file.Files. এটি প্রতিটি অনুষ্ঠানের জন্য পদ্ধতি আছে. এই শ্রেণীর সমস্ত পদ্ধতি স্থির এবং পাথ অবজেক্টে কাজ করে। অনেকগুলি পদ্ধতি রয়েছে, তাই আমরা শুধুমাত্র সবচেয়ে গুরুত্বপূর্ণগুলি বিবেচনা করব:

পদ্ধতি বর্ণনা
Path createFile(Path path)
একটি নতুন ফাইল তৈরি করে যার পাথpath
Path createDirectory(Path path)
একটি নতুন ডিরেক্টরি তৈরি করে
Path createDirectories(Path path)
একাধিক ডিরেক্টরি তৈরি করে
Path createTempFile(prefix, suffix)
একটি অস্থায়ী ফাইল তৈরি করে
Path createTempDirectory(prefix)
একটি অস্থায়ী ডিরেক্টরি তৈরি করে
void delete(Path path)
একটি ফাইল বা ডিরেক্টরি খালি থাকলে মুছে দেয়
Path copy(Path src, Path dest)
একটি ফাইল কপি করে
Path move(Path src, Path dest)
একটি ফাইল সরান
boolean isDirectory(Path path)
পাথটি একটি ডিরেক্টরি এবং একটি ফাইল নয় কিনা তা পরীক্ষা করে
boolean isRegularFile(Path path)
পাথটি একটি ফাইল এবং একটি ডিরেক্টরি নয় কিনা তা পরীক্ষা করে
boolean exists(Path path)
প্রদত্ত পথে একটি বস্তু বিদ্যমান কিনা তা পরীক্ষা করে
long size(Path path)
ফাইলের আকার ফেরত দেয়
byte[] readAllBytes(Path path)
বাইটের অ্যারে হিসাবে একটি ফাইলের সম্পূর্ণ বিষয়বস্তু ফেরত দেয়
String readString(Path path)
একটি স্ট্রিং হিসাবে একটি ফাইলের সম্পূর্ণ বিষয়বস্তু ফেরত দেয়
List<String> readAllLines(Path path)
স্ট্রিংগুলির একটি তালিকা হিসাবে একটি ফাইলের সম্পূর্ণ বিষয়বস্তু ফেরত দেয়
Path write(Path path, byte[])
একটি ফাইলে বাইটের একটি অ্যারে লেখে
Path writeString(Path path, String str)
একটি ফাইলে একটি স্ট্রিং লেখে
DirectoryStream<Path> newDirectoryStream(Path dir)
প্রদত্ত ডিরেক্টরি থেকে ফাইলের (এবং সাবডিরেক্টরি) সংগ্রহ ফেরত দেয়

2. ফাইল এবং ডিরেক্টরি তৈরি করা

ফাইল এবং ডিরেক্টরি তৈরি করা খুব সহজ। আসুন কিছু উদাহরণ দিয়ে নিজেদেরকে বোঝাই:

কোড বিঃদ্রঃ
Files.createFile(Path.of("c:\\readme.txt"));
একটি ফাইল তৈরি করে
Files.createDirectory(Path.of("c:\\test"));
একটি ডিরেক্টরি তৈরি করে
Files.createDirectories(Path.of("c:\\test\\1\\2\\3"));
একটি ডিরেক্টরি এবং সমস্ত প্রয়োজনীয় সাবডিরেক্টরি তৈরি করে যদি সেগুলি বিদ্যমান না থাকে।

3. অনুলিপি করা, সরানো এবং মুছে ফেলা

ফাইল কপি করা, সরানো এবং মুছে ফেলা ঠিক ততটাই সহজ। এটি ডিরেক্টরিগুলির ক্ষেত্রেও প্রযোজ্য, তবে সেগুলি অবশ্যই খালি হতে হবে।

কোড বিঃদ্রঃ
Path path1 = Path.of("c:\\readme.txt");
Path path2 = Path.of("c:\\readme-copy.txt");
Files.copy(path1, path2);
একটি ফাইল কপি করে
Path path1 = Path.of("c:\\readme.txt");
Path path2 = Path.of("d:\\readme-new.txt");
Files.move(path1, path2);
একটি ফাইল সরানো এবং পুনঃনামকরণ করে
Path path = Path.of("d:\\readme-new.txt");
Files.delete(path);
একটি ফাইল মুছে দেয়

4. একটি ফাইলের ধরন এবং অস্তিত্ব পরীক্ষা করা

যখন আপনার কাছে অন্য কারো দ্বারা প্রদত্ত একটি পথ থাকে, আপনি জানতে চান এটি একটি ফাইল বা একটি ডিরেক্টরি কিনা। এবং সাধারণভাবে, এই ধরনের একটি ফাইল/ডিরেক্টরি বিদ্যমান বা না?

এর জন্য বিশেষ পদ্ধতিও রয়েছে। আপনি সহজেই একটি ফাইলের দৈর্ঘ্য খুঁজে পেতে পারেন:

কোড বিঃদ্রঃ
Files.isRegularFile(Path.of("c:\\readme.txt"));
true
Files.isDirectory(Path.of("c:\\test"));
true
Files.exists(Path.of("c:\\test\\1\\2\\3"));
false
Files.size(Path.of("c:\\readme.txt"));
10112

5. ফাইলের বিষয়বস্তু নিয়ে কাজ করা

অবশেষে, পদ্ধতির একটি সম্পূর্ণ সিরিজ রয়েছে যা একটি ফাইলের বিষয়বস্তু পড়া বা লেখা সহজ করে তোলে। উদাহরণ:

কোড বর্ণনা
Path path = Path.of("c:\\readme.txt");
List<String> list = Files.readAllLines(path);

for (String str : list)
   System.out.println(str);

স্ট্রিংগুলির একটি তালিকা হিসাবে ফাইলের বিষয়বস্তু পড়ুন।

স্ট্রিংগুলি প্রদর্শন করুন


6. একটি ডিরেক্টরির বিষয়বস্তু পাওয়া

সবচেয়ে আকর্ষণীয় পদ্ধতি এখনও অবশেষ। এটি একটি প্রদত্ত ডিরেক্টরিতে ফাইল এবং সাবডিরেক্টরি পেতে ব্যবহৃত হয়।

আমরা পদ্ধতি সম্পর্কে কথা বলছি newDirectoryStream(), যা একটি বিশেষ DirectoryStream<Path>বস্তু প্রদান করে। এটিতে একটি পুনরাবৃত্তিকারী(!) রয়েছে যা আপনি একটি প্রদত্ত ডিরেক্টরির সমস্ত ফাইল এবং সাবডিরেক্টরি পেতে ব্যবহার করতে পারেন।

এটি শোনার চেয়ে সহজ।

কোড বর্ণনা
Path path = Path.of("c:\\windows");

try (DirectoryStream<Path> files = Files.newDirectoryStream(path)) {
   for (Path path : files)
      System.out.println(path);
}


ফাইলগুলির একটি তালিকা সহ একটি বস্তু পান
ফাইলগুলির তালিকার উপর লুপ করুন৷

বস্তুটির DirectoryStream<Path>দুটি বৈশিষ্ট্য রয়েছে। প্রথমত, এটিতে একটি পুনরাবৃত্তিকারী রয়েছে যা ফাইলের পাথ ফেরত দেয় এবং আমরা এই বস্তুটিকে একটি for-eachলুপের ভিতরে ব্যবহার করতে পারি।

এবং দ্বিতীয়ত, এই অবজেক্টটি একটি ডাটা স্ট্রীম, তাই এটিকে অবশ্যই close()পদ্ধতিটি ব্যবহার করে স্পষ্টভাবে বন্ধ করতে হবে বা try-with-resourcesব্লকের ভিতরে ব্যবহার ঘোষণা করতে হবে।



7. Files.newInputStreamপদ্ধতি

জাভা 5 দিয়ে শুরু করে, FileInputStreamএবং FileOutputStreamক্লাসগুলি বাতিল করা হয়েছে। তাদের অসুবিধাগুলির মধ্যে একটি ছিল যে যখন এই শ্রেণীর বস্তুগুলি তৈরি করা হয়, তখন ফাইলগুলি অবিলম্বে ডিস্কে তৈরি হয়। এবং ফাইল তৈরির সাথে সম্পর্কিত সমস্ত ব্যতিক্রম সম্ভাব্যভাবে নিক্ষেপ করা যেতে পারে।

পরে এটি সেরা সিদ্ধান্ত নয় বলে স্বীকৃত হয়। java.nio.Filesতদনুসারে, ফাইল অবজেক্ট তৈরি করতে ইউটিলিটি ক্লাসের পদ্ধতিগুলি ব্যবহার করার পরামর্শ দেওয়া হয় ।

এখানে পুরানো পদ্ধতি এবং ফাইল তৈরির জন্য নতুন পদ্ধতির মধ্যে একটি তুলনা:

আগে
String src = "c:\\projects\\log.txt";
InputStream input = new FileInputStream(src);
পরে
String src = "c:\\projects\\log.txt";
InputStream input = Files.newInputStream( Path.of(src) );

এবং এর জন্য একটি অনুরূপ প্রতিস্থাপন আছে FileOutputStream:

আগে
String src = "c:\\projects\\log.txt";
OutputStream  output = new FileOutputStream( src );
পরে
String src = "c:\\projects\\log.txt";
OutputStream  output = Files.newOutputStream( Path.of( src ) );