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पद्धत

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