1. Pathवर्ग

जर तुम्हाला एखादा प्रोग्राम लिहायचा असेल जो डिस्कवरील फाइल्ससह काहीतरी करतो, तर ते अगदी सोपे आहे. Java मध्ये बरेच वर्ग आहेत जे तुम्हाला फाइल्स आणि त्यांच्या सामग्रीसह कार्य करण्यास मदत करतात.

Java च्या सुरुवातीच्या आवृत्त्यांमध्ये फायलींसह कार्य करण्यासाठी Fileआणि सारखे वर्ग वापरले. FileInputStreamतथापि, Fileवर्ग आता बहिष्कृत आहे आणि वापरण्यासाठी शिफारस केलेली नाही. अर्थात, तुम्हाला ते कोड, पद्धत पॅरामीटर्स किंवा क्लास कन्स्ट्रक्टरमध्ये आढळू शकते.

अगदी सुरुवातीपासून, आपण Pathक्लास वापरून फाइल्ससह कसे कार्य करावे हे शिकण्यास सुरुवात करू. Pathहा वर्ग बदलला आहे File. ते अधिक सुरक्षित आणि अधिक कार्यक्षम आहे.

Pathवर्ग

तांत्रिकदृष्ट्या, Pathएक वर्ग नाही - तो एक इंटरफेस आहे. हे प्रत्येक ऑपरेटिंग सिस्टमसाठी (आणि फाइल सिस्टम) वर्गाच्या वंशजांच्या लेखनास अनुमती देण्यासाठी केले जाते Path.

विंडोजमध्ये फाइल पथ लिहिण्यासाठी एक मानक आहे आणि लिनक्समध्ये दुसरे आहे. अर्थात, जगात इतर अनेक ऑपरेटिंग सिस्टम आहेत आणि प्रत्येकाचे स्वतःचे मानक आहेत.

म्हणूनच Pathफायलींसह कार्य करणार्या पद्धतींमध्ये इंटरफेस सर्वत्र वापरला जातो, जरी प्रत्यक्षात कार्य त्याच्या वंशज वर्गांद्वारे होते: WindowsPath, UnixPath, ...

एक Pathवस्तू तयार करणे

ऑब्जेक्ट तयार करण्यासाठी Path(जी प्रत्यक्षात वंशज वर्गाची वस्तू असेल WindowsPath), तुम्हाला असे विधान वापरावे लागेल:

Path name = Path.of(path);

nameव्हेरिएबलचे नाव कुठे आहे Pathआणि pathफाईल (किंवा निर्देशिका) च्या नावासह फाईलचा मार्ग आहे (किंवा निर्देशिका). आणि ofवर्गाची एक स्थिर पद्धत आहे Path.

विंडोजवर प्रोग्राम चालू असल्यास ऑब्जेक्ट्स तयार करण्यासाठी पद्धत of()वापरली जाते . WindowsPathजर प्रोग्राम लिनक्सवर चालू असेल तर UnixPathऑब्जेक्ट्स तयार होतात. सारखे कोड वापरून तुम्ही ऑब्जेक्ट तयार करू शकत नाही .Pathnew Path()

उदाहरणे:

कोड नोंद
Path file = Path.of("c:\\projects\\note.txt");
फाईलचा मार्ग
Path directory = Path.of("c:\\projects\\");
निर्देशिकेचा मार्ग

Pathवैध ऑब्जेक्ट अस्तित्वात येण्यासाठी फाइल (किंवा निर्देशिका) अस्तित्वात असणे आवश्यक नाही . कदाचित तुम्हाला फक्त एक फाईल तयार करायची आहे... एखादी Pathवस्तू सूप-अप सारखी असते String: ती डिस्कवरील विशिष्ट फाईलशी बांधलेली नसते — ती फक्त डिस्कवर एक विशिष्ट मार्ग संग्रहित करते. बस एवढेच.


Path2. प्रकाराच्या पद्धती

इंटरफेसमध्ये Pathकाही मनोरंजक पद्धती आहेत. सर्वात मनोरंजक खालील सारणीमध्ये सादर केले आहेत.

पद्धत वर्णन
Path getParent()
मूळ निर्देशिका परत करते
Path getFileName()
निर्देशिकेशिवाय फाइलनाव परत करते
Path getRoot()
पाथवरून रूट डिरेक्टरी परत करते
boolean isAbsolute()
सध्याचा मार्ग निरपेक्ष आहे का ते तपासते
Path toAbsolutePath()
मार्गाला निरपेक्षतेत रूपांतरित करते
Path normalize()
डिरेक्टरीच्या नावातील वाइल्डकार्ड काढून टाकते.
Path resolve(Path other)
निरपेक्ष आणि सापेक्ष मार्गांमधून नवीन परिपूर्ण मार्ग तयार करते.
Path relativize(Path other)
दोन निरपेक्ष मार्गांमधून सापेक्ष मार्ग मिळतो.
boolean startsWith(Path other)
वर्तमान मार्ग दिलेल्या मार्गाने सुरू होतो की नाही ते तपासते
boolean endsWith(Path other)
वर्तमान मार्ग दिलेल्या मार्गाने संपतो की नाही ते तपासते
int getNameCount()
/परिसीमक वापरून मार्गाचे भागांमध्ये विभाजन करते .
भागांची संख्या मिळवते.
Path getName(int index)
/परिसीमक वापरून मार्गाचे भागांमध्ये विभाजन करते .
त्याच्या निर्देशांकानुसार भाग मिळवते.
Path subpath(int beginIndex, int endIndex)
/परिसीमक वापरून मार्गाचे भागांमध्ये विभाजन करते .
दिलेल्या मध्यांतराशी सुसंगत उपपथ मिळवते.
File toFile()
Pathएखाद्या वस्तूचे नापसंत Fileऑब्जेक्टमध्ये रूपांतर करते
URI toUri()
ऑब्जेक्टला ऑब्जेक्टमध्ये Pathरूपांतरित करतेURI

खाली विद्यमान पद्धतींचे संक्षिप्त वर्णन आहे.


3. भागांमध्ये मार्ग विभाजित करणे

पद्धत getParent()वर्तमान मार्गासाठी मूळ निर्देशिकेकडे निर्देशित करणारा मार्ग परत करते. हा मार्ग निर्देशिका किंवा फाइल आहे की नाही याची पर्वा न करता:

कोड मूल्य
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getParent();
"c:\\windows\\projects\\"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getParent();
"c:\\windows\\"
String str = "c:\\";
Path path = Path.of(str).getParent();
null

पद्धत getFileName()एकच फाइल (किंवा निर्देशिका) नाव परत करते — शेवटच्या परिसीमानंतर जे काही येते ते:

कोड मूल्य
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).getFileName();
"note.txt"
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getFileName();
"projects"
String str = "c:\\";
Path path = Path.of(str).getFileName();
null

पद्धत getRoot()रूट निर्देशिकेचा मार्ग परत करते:

कोड मूल्य
String str = "c:\\windows\\projects\\";
Path path = Path.of(str).getRoot();
"c:\\"


4. निरपेक्ष आणि सापेक्ष मार्ग

दोन प्रकारचे मार्ग आहेत: निरपेक्ष आणि सापेक्ष. मूळ डिरेक्ट्रीमधून निरपेक्ष मार्ग सुरू होतो. Windows साठी, हे फोल्डर असू शकते c:\; लिनक्ससाठी — /निर्देशिका

सापेक्ष मार्ग काही निर्देशिकेशी संबंधित अर्थपूर्ण असतो. म्हणजेच, हे रस्त्याच्या शेवटासारखे आहे, परंतु सुरुवातीशिवाय. तुम्ही सापेक्ष मार्गाला निरपेक्ष मार्गात बदलू शकता आणि त्याउलट

boolean isAbsolute()पद्धत

सध्याचा मार्ग निरपेक्ष आहे की नाही हे पद्धत तपासते

कोड मूल्य
String str = "c:\\windows\\projects\\note.txt";
boolean abs = Path.of(str).isAbsolute();
true
String str = "src\\com\\codegym\\Main.java";
boolean abs = Path.of(str).isAbsolute();
false

Path toAbsolutePath()पद्धत

मार्गाला निरपेक्षतेत रूपांतरित करते. आवश्यक असल्यास, त्यात वर्तमान कार्यरत निर्देशिका जोडते:

कोड मूल्य
String str = "c:\\windows\\projects\\note.txt";
Path path = Path.of(str).toAbsolutePath();
"c:\\windows\\projects\\note.txt"
String str = "src\\com\\codegym\\Main.java";
Path path = Path.of(str).toAbsolutePath();
"d:\\work\\src\\com\\codegym\\Main.java"

Path normalize()पद्धत

पथामध्ये, निर्देशिकेच्या नावाऐवजी, आपण ".." लिहू शकता, ज्याचा अर्थ एक निर्देशिका मागे जा . सामान्यीकरण या गोष्टी दूर करते. उदाहरणे:

कोड मूल्य
String str = "c:\\windows\\..\\projects\\note.txt";
Path path = Path.of(str).normalize();
"c:\\projects\\note.txt"
String str = "src\\com\\codegym\\..\\Main.java";
Path path = Path.of(str).normalize();
"src\\com\\Main.java"

Path relativize(Path other)पद्धत

पद्धत relativize()तुम्हाला "पथांमधील फरक" तयार करू देते: एक मार्ग दुस-याशी संबंधित

कोड मूल्य
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path2.relativize(path1);
"projects\\note.txt"
Path path1 = Path.of("c:\\windows\\projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path1.relativize(path2);
"..\\.."
Path path1 = Path.of("c:\\aaa\\bbb\\1.txt");
Path path2 = Path.of("d:\\zzz\\y.jpg");
Path result = path1.relativize(path2);
बेकायदेशीर युक्तिवाद अपवाद:
दोन पथांमध्ये भिन्न "रूट" (वेगवेगळ्या डिस्क) आहेत

Path resolve(Path other)पद्धत

पद्धत resolve()याच्या उलट करते relativize(): ती निरपेक्ष आणि सापेक्ष मार्गापासून एक नवीन परिपूर्ण मार्ग तयार करते.

कोड मूल्य
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path1.resolve(path2);
"c:\\windows"
Path path1 = Path.of("projects\\note.txt");
Path path2 = Path.of("c:\\windows\\");
Path result = path2.resolve(path1);
"c:\\windows\\projects\\note.txt"

toFile()पद्धत

पद्धत एक नापसंत Fileऑब्जेक्ट परत करते जी ऑब्जेक्ट प्रमाणेच फाइल पथ संचयित करते Path.

toURI()पद्धत

पद्धत मानक URI मध्ये पथ रूपांतरित करते आणि फाईलचा मार्ग असलेली ऑब्जेक्ट परत करते:

फाईलचा मार्ग फाइलला URI
c:\windows\projects\note.txt
file:///c:/windows/projects/note.txt