"வணக்கம், அமிகோ. நீண்ட நேரம், பார்க்கவில்லை."
"ஹாய், பிலாபோ. என்ன பேசப் போகிறாய்?"
"இன்று நான் கோப்புகளுடன் பணிபுரிவது பற்றி உங்களுக்குச் சொல்லப் போகிறேன். ஜாவாவில் ஒரு சிறப்பு வகுப்பு (கோப்பு) உள்ளது, அதை நீங்கள் ஹார்ட் டிரைவில் கோப்புகளை நிர்வகிக்க பயன்படுத்தலாம். கோப்பு உள்ளடக்கங்களை நிர்வகிக்க, பிற வகுப்புகள் உள்ளன: FileInputStream, FileOutputStream போன்றவை. "
"சுவாரஸ்யமாக இருக்கிறது. ஆனால் நீங்கள் 'கோப்புகளை நிர்வகி' என்று சொன்னால், நீங்கள் என்ன சொல்கிறீர்கள்?"
"அதைத்தான் நான் இப்போது விளக்கப் போகிறேன். கோப்புகளை உருவாக்கலாம், நீக்கலாம், மறுபெயரிடலாம், மேலும் பலவற்றைச் செய்யலாம். ஒரு கோப்பின் உள்ளடக்கங்களுடன் செயல்படும் (படிக்க, எழுத, மாற்ற) ஒவ்வொரு வகுப்பிற்கும் கோப்புப் பொருளை அனுப்பலாம். . உதாரணத்திற்கு:"
FileInputStream input = new FileInputStream("c:/path/a.txt");
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" என்ற பெயர் "மேக் டைரக்டரி" என்பதிலிருந்து வந்தது. |
boolean mkdirs() |
ஒரு கோப்பகத்தையும் அதன் அனைத்து துணை அடைவுகளையும் உருவாக்குகிறது. |
boolean delete() |
பொருளுடன் தொடர்புடைய கோப்பை நீக்குகிறது. பொருள் ஒரு கோப்பகமாக இருந்தால், அதில் கோப்புகள் இல்லை என்றால் மட்டுமே அடைவு நீக்கப்படும். |
void deleteOnExit() |
நிரல் வெளியேறும் போது தானாகவே நீக்கப்படும் கோப்புகளின் சிறப்பு பட்டியலில் கோப்பை சேர்க்கிறது. |
File createTempFile( String prefix, String suffix, File directory) |
«dasd4d53sd» போன்ற தோராயமாக உருவாக்கப்பட்ட தனித்துவமான பெயருடன் தற்காலிக கோப்பை உருவாக்குகிறது. கூடுதல் அளவுருக்கள் ஒரு பெயர் முன்னொட்டு மற்றும் பின்னொட்டு ஆகும். ஒரு கோப்பகம் குறிப்பிடப்படவில்லை என்றால், தற்காலிக கோப்புகளுக்கான சிறப்பு OS கோப்பகத்தில் கோப்பு உருவாக்கப்படும். |
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());
}
"ம்ம். கரெக்ட்."
"ஆனால், கோப்பு மற்றும் அடைவு ஆகிய இரண்டிற்கும் ஒரே வகுப்பு - கோப்பு - பயன்படுத்தப்படுவது கொஞ்சம் குழப்பமாக உள்ளது. அது எனக்கு மிகவும் தர்க்கரீதியாகத் தெரியவில்லை."
"வரலாற்று காரணங்களுக்காக அது அப்படிச் செயல்பட்டது. ஒரு அடைவு வட்டில் ஒரு சிறப்பு 'வெற்று' கோப்பாக இருந்தது. நிச்சயமாக, இப்போது நிறைய மாறிவிட்டது, ஆனால் எல்லாம் இல்லை. இன்று என்னிடம் அவ்வளவுதான்."
"சுவாரசியமான பாடத்திற்கு நன்றி, பிலாபோ."
GO TO FULL VERSION