"హాయ్, అమిగో. చాలా కాలం, చూడలేదు."

"హాయ్, బిలాబో. ఏం మాట్లాడబోతున్నారు?"

"ఈ రోజు నేను మీకు ఫైల్‌లతో పని చేయడం గురించి చెప్పబోతున్నాను.  Javaలో మీరు హార్డ్ డ్రైవ్‌లో ఫైల్‌లను నిర్వహించడానికి ఉపయోగించే ఒక ప్రత్యేక తరగతి (ఫైల్) ఉంది. ఫైల్ కంటెంట్‌లను నిర్వహించడానికి, ఇతర తరగతులు ఉన్నాయి: FileInputStream, FileOutputStream, మొదలైనవి. "

ఫైల్, ఫైల్స్, పాత్ - 1

"ఆసక్తికరంగా ఉంది. అయితే మీరు 'ఫైళ్లను నిర్వహించండి' అని చెప్పినప్పుడు, మీ ఉద్దేశ్యం ఏమిటి?"

"నేను ఇప్పుడు వివరించబోయేది అదే. ఫైల్‌లను సృష్టించవచ్చు, తొలగించవచ్చు, పేరు మార్చవచ్చు మరియు మరెన్నో చేయవచ్చు. మీరు ఫైల్‌లోని కంటెంట్‌లతో పనిచేసే (చదవడానికి, వ్రాయడానికి, మార్చడానికి) ఆచరణాత్మకంగా ప్రతి తరగతికి ఫైల్ ఆబ్జెక్ట్‌ను పంపవచ్చు. . ఉదాహరణకి:"

మీరు ఫైల్ పేరును నేరుగా 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" పేరు "మేక్ డైరెక్టరీ" నుండి వచ్చింది.
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());
}

"హ్మ్. కరెక్ట్."

"కానీ ఫైల్ మరియు డైరెక్టరీ రెండింటికీ ఒకే తరగతి ― ఫైల్ - ఉపయోగించబడటం కొంచెం గందరగోళంగా ఉంది. అది నాకు చాలా లాజికల్‌గా అనిపించదు."

"చారిత్రక కారణాల వల్ల ఇది ఆ విధంగా పనిచేసింది. ఒక డైరెక్టరీ డిస్క్‌లో ఒక ప్రత్యేక 'ఖాళీ' ఫైల్‌గా ఉండేది. అయితే, ఇప్పుడు చాలా మారిపోయింది, కానీ ప్రతిదీ కాదు. ఈ రోజు నా దగ్గర ఉన్నది అంతే."

"ఆసక్తికరమైన పాఠానికి ధన్యవాదాలు, బిలాబో."