"अरे, ऋषी! हाय!"

"हाय, अमिगो! आयुष्य कसं आहे?"

"छान. बिलाबो नुकतेच मला फाईल आणि त्यासोबत कसे काम करावे याबद्दल काही मनोरंजक गोष्टी सांगत आहे."

"जसे घडते, मला वाटते की या विषयावर माझ्याकडे काहीतरी जोडायचे आहे."

"खरंच? मग मी सर्व कान आहे."

"ठीक आहे, ऐका. जावा सतत विकसित होत आहे. त्याचे विकसक वेगवेगळ्या गोष्टी अधिक कार्यक्षमतेने करण्यासाठी सतत नवीन मार्ग शोधत असतात. Java 7 मध्ये, त्यांनी फाइल वर्गाला पर्याय जोडला."

फाइल्स, पथ - १

"पर्यायी?"

"होय. त्यांनी फाईलचा वर्ग आधार म्हणून घेतला, काही नवीन सामग्री जोडली, पद्धतींचे नाव बदलले आणि नंतर त्याचे दोन भाग केले. त्यामुळे आता दोन नवीन वर्ग आहेत: पथ आणि फाइल्सपाथ हा फाइलचा नवीन अॅनालॉग आहे क्लास, आणि फाइल हा युटिलिटी क्लास आहे (अॅरे आणि कलेक्शन क्लासेसशी एकरूप आहे). फाईल क्लासच्या सर्व स्टॅटिक पद्धती तिथे जातात. अशा प्रकारे करणे OOP च्या दृष्टीने 'अधिक योग्य' आहे."

"बरं, जर ते ओओपीच्या दृष्टीने असेल तर ठीक आहे. मग काय बदलले?"

"प्रथम, त्यांनी स्ट्रिंग  आणि फाइल ऑब्जेक्ट्स परत करणाऱ्या पद्धतींचे पुनरुत्पादन न करण्याचा निर्णय घेतला  . पाथ  क्लासमध्ये, सर्व पद्धती पथ परत करतात .

"दुसरे, त्यांनी फाइल्स वर्गात बर्‍याच स्थिर उपयोगिता पद्धती हलवल्या ."

"तिसरे, सापेक्ष मार्गांसह कार्य करणे अधिक सोयीचे झाले."

"पद्धतींची यादी येथे आहे:"

पथ वर्गाच्या पद्धती वर्णन
boolean isAbsolute() मार्ग निरपेक्ष असल्यास सत्य मिळवते.
Path getRoot() वर्तमान मार्गाचे मूळ, म्हणजे सर्वात वरची निर्देशिका मिळवते.
Path getFileName() वर्तमान मार्गावरून फाइलचे नाव परत करते.
Path getParent() वर्तमान मार्गावरून निर्देशिका परत करते.
boolean startsWith(Path other) वर्तमान मार्ग पास केलेल्या मार्गाने सुरू होतो की नाही ते तपासते.
boolean endsWith(Path other) वर्तमान मार्ग पास केलेल्या मार्गाने संपतो की नाही ते तपासते.
Path normalize() वर्तमान मार्ग सामान्य करते. उदाहरणार्थ, «c:/dir/dir2/../a.txt» ला «c:/dir/a.txt» मध्ये रूपांतरित करते
Path relativize(Path other) दोन पथांच्या सापेक्ष मार्गाची गणना करते, म्हणजे "पाथांमधील फरक"
Path resolve(String other) वर्तमान आणि संबंधित मार्ग वापरून निरपेक्ष मार्गाचे निराकरण करते.
URI toUri() वर्तमान पथ/फाइल असल्यास URI परत करते.
Path toAbsolutePath() मार्ग सापेक्ष असल्यास निरपेक्ष मार्गावर रूपांतरित करतो.
File toFile() वर्तमान पाथ ऑब्जेक्टशी संबंधित फाइल ऑब्जेक्ट मिळवते.

"आणि सध्याचा मार्ग - ते काय आहे?"

"हा मार्ग आहे जो पथ ऑब्जेक्टच्या कन्स्ट्रक्टरकडे गेला होता ज्याच्या पद्धती कॉल केल्या जात आहेत."

"ठीक आहे. तर फाइल्स क्लासमध्ये कोणत्या पद्धती आहेत?"

"तुला कुठेतरी जाण्याची घाई आहे का? मी आत्ताच सांगेन. या सर्वात महत्वाच्या पद्धती आहेत:"

फाइल्स वर्गाच्या पद्धती वर्णन
Path createFile(…) डिस्कवर फाइल तयार करते.
Path createDirectory(…) निर्देशिका तयार करते.
Path createDirectories(…) एक निर्देशिका आणि त्याच्या सर्व उपनिर्देशिका तयार करते.
Path createTempFile(…) तात्पुरती फाइल तयार करते.
Path createTempDirectory(…) तात्पुरती निर्देशिका तयार करते.
void delete(Path path) फाइल हटवते.
Path copy(Path source, Path target,…) फाइल कॉपी करते.
Path move(Path source, Path target,…) फाइल हलवते.
boolean isSameFile(Path, Path) दोन फाइल्सची तुलना करते.
boolean isDirectory(Path) पथ ही निर्देशिका आहे का?
boolean isRegularFile(Path) पथ फाईल आहे का?
long size(Path) फाइल आकार परत करते.
boolean exists(Path) त्याच नावाची वस्तू अस्तित्वात आहे का?
boolean notExists(Path) त्याच नावाची वस्तू अस्तित्वात नाही का?
long copy(InputStream, OutputStream) इनपुटस्ट्रीममधून आउटपुटस्ट्रीमवर बाइट्स कॉपी करते.
long copy(Path, OutputStream) पाथपासून आउटपुटस्ट्रीमवर सर्व बाइट्स कॉपी करते.
long copy(InputStream, Path) InputStream वरून पाथवर सर्व बाइट्स कॉपी करते.
byte[] read(InputStream, int initialSize) InputStream वरून बाइट्सचा अ‍ॅरे वाचतो.
byte[] readAllBytes(Path path) इनपुटस्ट्रीममधील सर्व बाइट्स वाचते.
List<String> readAllLines(Path path,..) मजकूर फाइल वाचते आणि स्ट्रिंगची सूची परत करते.
Path write(Path path, byte[] bytes,…) फाइलवर बाइट्सचा अ‍ॅरे लिहितो.

"किती मनोरंजक! खूप छान कार्ये आणि सर्व एकाच ठिकाणी."

"बरं बघा. समजा तुम्हाला इंटरनेटवरून एखादी फाइल डाउनलोड करायची आहे, आणि नंतर ती एखाद्याला पाठवायची आहे. हे करण्यासाठी, डिस्कवर तात्पुरती फाइल तयार करणे आणि त्यात वाचलेला डेटा सेव्ह करणे खूप सोयीचे आहे."

"इंटरनेटवरून फाइल डाउनलोड करणे अवघड आहे का?"

"हे अगदी सोपे आहे. हे उदाहरण पहा:"

कोड
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();

Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);

"आणि तेच?"

"हो, काय पाहण्याची अपेक्षा होती? फक्त 4 ओळी आहेत."

" ओळ 1.  एक URL ऑब्जेक्ट तयार करते, ज्याला इमेज फाइलची URL पास केली जाते.

" ओळ 2.  फाइल वाचण्यासाठी एक प्रवाह (इनपुटस्ट्रीम) url ऑब्जेक्टवर उघडला जातो.

" ओळ 3.  ही createTempFileपद्धत तात्पुरती फाइल तयार करण्यासाठी वापरली जाते.

" ओळ 4.  Files.copy पद्धत वरून डेटा कॉपी करते  inputStream . tempFileइतकेच."

"कल्पक!"

"छान. तुम्हाला ते आवडले याचा मला आनंद आहे. मला वाटते की बाकीच्या पद्धती तुम्ही स्वतः शोधून काढू शकाल. आणि मी डिएगोला तुम्हाला त्यांच्याबद्दल अनेक कार्ये देण्यास सांगेन."

"तसे, या सामग्रीवर ही एक चांगली लिंक आहे"