"हाय, अमिगो. बराच वेळ झाला नाही बघ."

"हाय, बिलाबो. काय बोलणार आहेस?"

"आज मी तुम्हाला फाइल्ससह काम करण्याबद्दल सांगणार आहे.  Java मध्ये एक विशेष वर्ग (फाइल) आहे ज्याचा वापर तुम्ही हार्ड ड्राइव्हवरील फाइल्स व्यवस्थापित करण्यासाठी करू शकता. फाइल सामग्री व्यवस्थापित करण्यासाठी, इतर वर्ग आहेत: FileInputStream, FileOutputStream, इ. "

फाइल, फाइल्स, पथ - १

"इंटरेस्टिंग. पण जेव्हा तुम्ही 'फाईल्स मॅनेज करा' म्हणता तेव्हा तुम्हाला काय म्हणायचे आहे?"

"मी आता तेच समजावून सांगणार आहे. फायली तयार केल्या जाऊ शकतात, हटवल्या जाऊ शकतात, पुनर्नामित केल्या जाऊ शकतात आणि बरेच काही. तुम्ही फाइलच्या मजकुरासह (वाचन, लिहिणे, बदल) काम करणार्‍या प्रत्येक वर्गाला फाइल ऑब्जेक्ट पास करू शकता. . उदाहरणार्थ:"

तुम्ही फाइलचे नाव थेट FileInputStream वर पास करू शकता
FileInputStream input = new FileInputStream("c:/path/a.txt");
किंवा तुम्ही स्वतंत्रपणे फाइल ऑब्जेक्ट तयार करू शकता, आणि नंतर ते FileInputStrea वर पास करू शकता
File file = new File("c:/path/a.txt");
FileInputStream input = new FileInputStream(file);

"पण दुसरा पर्याय मोठा आहे. मला अजूनही समजले नाही की आम्हाला या फाइल ऑब्जेक्ट्सची गरज का आहे."

"या विशिष्ट उदाहरणासाठी, तुम्ही बरोबर आहात. "हे तुम्हाला ते कसे करावे लागेल याचे उदाहरण नाही, तर तुम्ही ते कसे करू शकता.
परंतु कल्पना करा की आपल्याला एका विशिष्ट निर्देशिकेत असलेल्या सर्व फायलींची सूची प्रदर्शित करण्याची आवश्यकता आहे. फाइल ऑब्जेक्ट्स वापरून हे कसे केले जाऊ शकते ते येथे आहे:"

कोड
File folder = new File("c:/path/");
for (File file : folder.listFiles())
{
 System.out.println(file.getName());
}

" listFiles() ही एक पद्धत आहे जी «c:/path/» द्वारे दर्शविलेल्या फोल्डरमधील फायलींची सूची परत करते?"

"होय. पण प्रोग्रामर सहसा 'डिरेक्टरी' म्हणतात. 'फोल्डर' हा शब्द तुलनेने अलीकडे वापरात आला आहे, परंतु तत्त्वतः, दोन्ही अटी बरोबर आहेत आणि तुम्हाला जे आवडते ते तुम्ही म्हणू शकता."

"ठीक आहे. आणि getName () काय करते? फाईलचे नाव परत करा? नावात नेमके काय समाविष्ट केले आहे? मार्गासह संपूर्ण नाव, की फाईलचेच नाव?"

"फक्त फाईलचेच नाव. पूर्ण मार्गासाठी, file.getAbsolutePath() आहे."

"तर फाइल वर्गाकडे इतर कोणत्या पद्धती आहेत?"

"हे पहा:"

पद्धत वर्णन
boolean isDirectory() फाइल ऑब्जेक्ट निर्देशिका आहे का?
boolean isFile() ऑब्जेक्ट फाइल आहे का?
long length() फाइल आकार/लांबी बाइट्समध्ये परत करते.
boolean createNewFile() या नावाची फाइल अद्याप अस्तित्वात नसल्यास नवीन, रिकामी फाइल तयार करते.
boolean mkdir() निर्देशिका तयार करते. "mkdir" हे नाव "make Directory" वरून आले आहे.
boolean mkdirs() एक निर्देशिका आणि त्याच्या सर्व उपनिर्देशिका तयार करते.
boolean delete() ऑब्जेक्टशी संबंधित फाइल हटवते. जर ऑब्जेक्ट डिरेक्टरी असेल, तर डिरेक्टरी डिलीट केली तरच त्यात फाइल्स नसतील.
void deleteOnExit() फायलींच्या विशेष सूचीमध्ये फाइल जोडते जी प्रोग्राममधून बाहेर पडल्यावर स्वयंचलितपणे हटविली जाईल.
File createTempFile(
String prefix,
String suffix,
File directory)
यादृच्छिकपणे व्युत्पन्न केलेल्या अद्वितीय नावासह तात्पुरती फाइल तयार करते, जसे की «dasd4d53sd».
अतिरिक्त पॅरामीटर्स हे नाव उपसर्ग आणि प्रत्यय आहेत. निर्देशिका निर्दिष्ट केलेली नसल्यास, तात्पुरत्या फायलींसाठी विशेष ओएस निर्देशिकेत फाइल तयार केली जाते.
boolean exists() हार्ड ड्राइव्हवर समान नावाची फाइल अस्तित्वात असल्यास खरे मिळवते.
String getAbsolutePath() फाईलचा पूर्ण मार्ग त्याच्या सर्व उपनिर्देशिकांसह परत करतो.
String getCanonicalPath() कॅनोनिकल फाइल पथ परत करते.
उदाहरणार्थ, पथ «c:/dir/dir2/../a.txt» ला «c:/dir/a.txt» मध्ये रूपांतरित करते
String[] list() वर्तमान ऑब्जेक्टद्वारे दर्शविलेल्या निर्देशिकेमध्ये समाविष्ट असलेल्या फाइल्सच्या नावांचा अॅरे मिळवते.
File[] listFiles() वर्तमान फाइल ऑब्जेक्टद्वारे दर्शविलेल्या निर्देशिकेमध्ये समाविष्ट असलेल्या फाइल्सचा अॅरे मिळवते.
long getTotalSpace() फाइल ज्या डिस्कवर आहे त्यावरील एकूण जागा (बाइट्सची संख्या) मिळवते.
long getFreeSpace() फाइल ज्या डिस्कवर आहे त्यावरील मोकळ्या जागेचे प्रमाण (बाइट्सची संख्या) परत करते.
boolean renameTo(File) फाईलचे नाव बदलते, म्हणजे फाईलमधील सामग्रीला नवीन नाव मिळते. दुसऱ्या शब्दांत, तुम्ही फाइलचे नाव बदलून «c:/dir/a.txt» ला «d:/out/text/b.doc» करू शकता.
String getName() पाथशिवाय फक्त फाईलचे नाव परत करते.
String getParent() नावाशिवाय, वर्तमान फाईलमध्ये फक्त पथ (डिरेक्टरी) परत करते.
Path toPath() वर्तमान फाइल ऑब्जेक्टशी संबंधित पाथ ऑब्जेक्ट मिळवते.

"अरे! खूप छोटी यादी नाही, हं? आणि असे दिसते की तुम्ही यासह बरेच काही करू शकता: फाइल तयार करा आणि हटवा, त्यांचे नाव बदला,..."

"तर सध्याच्या फाइलची डिरेक्टरी मिळवण्यासाठी, मला getParent() ला कॉल करणे आवश्यक आहे?"

"होय, परंतु ते स्ट्रिंग - फाइल पथ - फाइल ऑब्जेक्ट नाही. वास्तविक, फाइल वर्ग त्याच्या जवळजवळ सर्व पद्धतींची डुप्लिकेट करते: एक आवृत्ती स्ट्रिंग, दुसरी - फाइल ऑब्जेक्ट. ते तपासा:"

File file = new File("c:/path/a.txt");
String directory = file.getParent();
File file = new File("c:/path/a.txt");
File directory = file.getParentFile();

जर तुमच्याकडे फाइल पथ असलेली स्ट्रिंग असेल आणि तुम्हाला फाइल ऑब्जेक्टची आवश्यकता असेल, तर कन्स्ट्रक्टर वापरा. जर परिस्थिती उलट असेल (आपल्याकडे फाइल ऑब्जेक्ट आहे परंतु आपल्याला स्ट्रिंगची आवश्यकता आहे), तर getAbsolutePath () वापरा. उदाहरणार्थ:"

String path = "c:/a.txt";
File file = new File(path);
File file = new File("c:/a.txt");
String path = file.getAbsolutePath();

"समजले."

"छान. मग तुमच्यासाठी हे एक छोटे काम आहे: सध्याच्या फाइल प्रमाणेच डिरेक्टरीमध्ये असलेल्या सर्व फाइल्सची नावे दाखवा."

"काहीही सोपे असू शकत नाही. येथे पहा:"

कोड
//Some file
File originalFile = new File("c:/path/dir2/a.txt");

//An object representing the directory
File folder = originalFile.getParentFile();

//Print the file list on screen
for (File file : folder.listFiles())
{
 System.out.println(file.getName());
}

"हम्म. बरोबर."

"पण हे थोडे गोंधळात टाकणारे आहे की फाइल आणि डिरेक्टरी या दोन्हीसाठी समान वर्ग ― फाइल - वापरला जातो. ते मला फारसे तर्कसंगत वाटत नाही."

"ऐतिहासिक कारणांमुळे असे घडले. डिरेक्टरी ही डिस्कवर एक खास 'रिक्त' फाइल असायची. अर्थात, आता बरेच काही बदलले आहे, परंतु सर्वकाही नाही. आज माझ्याकडे एवढेच आहे."

"रंजक धड्याबद्दल धन्यवाद, बिलाबो."