"హలో, అమిగో! ఈ రోజు, ఎల్లీ మీకు అడాప్టర్ ప్యాటర్న్ గురించి చెప్పారు."

I/O స్ట్రీమ్‌లకు సంబంధించిన చాలా తరగతులు అడాప్టర్‌లుగా అమలు చేయబడతాయి. అవి సమానమైన ఇంటర్‌ఫేస్‌లను మారుస్తాయి లేదా అవి వాటిని కనెక్ట్ చేస్తాయి, సాధారణ నుండి ప్రారంభించి కాంప్లెక్స్‌కు వెళతాయి.

" InputStreamReader మరియు BufferedReader కూడా అడాప్టర్లేనా? కనీసం, అవి ఉపయోగించిన విధానంలో అడాప్టర్‌లకు చాలా పోలి ఉంటాయి: ఒక వస్తువు సృష్టించబడిన తర్వాత, అది మరొక తరగతి యొక్క కన్స్ట్రక్టర్‌కు పంపబడుతుంది."

"అవును, InputStreamReader ఇన్‌పుట్‌స్ట్రీమ్ ఇంటర్‌ఫేస్‌ను రీడర్ ఇంటర్‌ఫేస్‌గా మారుస్తుంది . బఫర్డ్ రీడర్ దాని స్వచ్ఛమైన రూపంలో అడాప్టర్ కాదు, ఎందుకంటే జావా సృష్టికర్తలు దాని పద్ధతులకు వారి స్వంత ప్రత్యేక ఇంటర్‌ఫేస్‌ను ఇవ్వకూడదని నిర్ణయించుకున్నారు. కానీ ఇది ఆత్మీయమైనది."

బజిలియన్ విభిన్న తరగతులను వ్రాయడానికి బదులుగా, జావా యొక్క సృష్టికర్తలు రెండు డజన్ల అడాప్టర్‌లను వ్రాసారు మరియు ప్రోగ్రామర్ కోరుకున్నప్పటికీ వాటిని ఒకదానికొకటి కనెక్ట్ చేయడానికి అనుమతించారు.

ఈ విధానం చాలా సౌకర్యవంతంగా ఉంటుంది. ప్రోగ్రామర్ ఎల్లప్పుడూ తన క్లాస్ మరియు/లేదా అడాప్టర్‌ని వ్రాయవచ్చు, అది ఒక ప్రామాణిక ఇంటర్‌ఫేస్‌ను అమలు చేయగలదు మరియు ఆమె నిర్మిస్తున్న అడాప్టర్ వస్తువుల గొలుసులో దానిని చేర్చవచ్చు.

"కాబట్టి ఇదంతా ఎలా పని చేస్తుంది. పెద్ద సంక్లిష్ట తరగతులకు బదులుగా, మేము సాధారణ వస్తువులు మరియు అడాప్టర్ల గొలుసులను తయారు చేస్తాము. ఆపై మీరు వాటిని సృష్టించి, వాటిని సరైన క్రమంలో కలపండి!"

"మరియు మీరు తప్పిపోయిన వాటిని అమలు చేయండి."

"అవును, నాకు అర్థమైంది."

"అయితే నిజానికి నేను ఈరోజు రీడర్ మరియు రైటర్ గురించి చెప్పాలనుకున్నాను . ఇవి ఇన్‌పుట్‌స్ట్రీమ్ మరియు అవుట్‌పుట్ స్ట్రీమ్ తరగతులకు చాలా పోలి ఉండే రెండు అబ్‌స్ట్రాక్ట్ తరగతులు. కానీ ఆ తరగతులలా కాకుండా, ఈ రెండు తరగతులు అక్షరాలతో పనిచేస్తాయి. అవి అక్షరాలు చదవడం మరియు వ్రాయడం. అవి వచన సమాచారంతో పని చేస్తున్నప్పుడు చాలా సౌకర్యవంతంగా ఉంటుంది. వారు కలిగి ఉన్న పద్ధతులను పరిశీలిద్దాం:"

రీడర్ పద్ధతులు పద్ధతి ఏమి చేస్తుంది
int read(char[] cbuf);
"ఈ పద్దతి వెంటనే బఫర్ ( చార్ అర్రే )లోకి అనేక అక్షరాలను రీడ్ చేస్తుంది, బఫర్ నిండినంత వరకు లేదా మూలంలో చదవడానికి మరిన్ని అక్షరాలు లేవు."
పద్ధతి వాస్తవంగా చదివిన అక్షరాల సంఖ్యను అందిస్తుంది (ఇది శ్రేణి పొడవు కంటే తక్కువగా ఉండవచ్చు)
int read();
"ఈ పద్దతి ఒక అక్షరాన్ని చదివి, దానిని తిరిగి ఇస్తుంది. ఫలితం రూపానికి పూర్ణాంకానికి విస్తరించబడుతుంది. అందుబాటులో ఉన్న అక్షరాలు లేకుంటే, పద్ధతి -1ని అందిస్తుంది."
boolean ready();
రీడ్ మెథడ్‌ల కోసం చదవని అక్షరాలు ఏవైనా ఉంటే ఈ పద్ధతి నిజమని చూపుతుంది
void close();
ఈ పద్ధతి స్ట్రీమ్‌ను "మూసివేస్తుంది". మీరు స్ట్రీమ్‌తో పని చేయడం పూర్తి చేసినప్పుడు మీరు దీనికి కాల్ చేస్తారు.
ఆబ్జెక్ట్ అప్పుడు ఫైల్‌ను మూసివేయడానికి అవసరమైన హౌస్‌కీపింగ్ కార్యకలాపాలను నిర్వహిస్తుంది, మొదలైనవి
. ఈ సమయంలో, మీరు స్ట్రీమ్ నుండి ఇకపై డేటాను చదవలేరు.

"రీడర్ యొక్క రీడ్(చార్ [] cbuf) పద్ధతి ఒక్కోసారి ఒక అక్షరం కాకుండా మొత్తం అక్షరాల బ్లాక్‌లను చదవడానికి అనుమతిస్తుంది. కనుక ఇది వేగంగా మరియు మరింత సౌకర్యవంతంగా ఉంటుంది."

"సరిగ్గా. మరియు ఇప్పుడు రైటర్‌కు ఎలాంటి పద్ధతులు ఉన్నాయో చూద్దాం:"

పద్ధతి పద్ధతి ఏమి చేస్తుంది
void write(int c);
ఈ పద్ధతి ఒక అక్షరాన్ని వ్రాస్తుంది. పూర్ణాంక రకం అక్షరానికి కుదించబడింది. అదనపు భాగం కేవలం విస్మరించబడుతుంది.
void write(char[] cbuff);
ఈ పద్ధతి అక్షరాల శ్రేణిని వ్రాస్తుంది.
void write(String s);
ఈ పద్ధతి ఒక స్ట్రింగ్ వ్రాస్తుంది. ఇది కేవలం అక్షరాల శ్రేణిగా మార్చబడుతుంది మరియు రెండవ పద్ధతి అంటారు.
void flush();
స్ట్రీమ్ అంతర్గతంగా ఇంకా వ్రాయబడని ఏదైనా డేటాను నిల్వ చేస్తున్నట్లయితే, ఈ పద్ధతి దానిని వ్రాయమని బలవంతం చేస్తుంది.
void close();
ఈ పద్ధతి స్ట్రీమ్‌ను "మూసివేస్తుంది". మీరు స్ట్రీమ్‌తో పని చేయడం పూర్తి చేసినప్పుడు మీరు దీనికి కాల్ చేస్తారు.
ఆబ్జెక్ట్ అప్పుడు ఫైల్‌ను మూసివేయడానికి అవసరమైన హౌస్‌కీపింగ్ కార్యకలాపాలను నిర్వహిస్తుంది, మొదలైనవి. మీరు ఇకపై స్ట్రీమ్‌కు డేటాను వ్రాయలేరు మరియు ఫ్లష్ స్వయంచాలకంగా పిలువబడుతుంది.

రీడర్ మరియు రైటర్ నైరూప్య తరగతులు అని అర్థం చేసుకోవడం ముఖ్యం . వారు ఏమీ చేయరు మరియు వాస్తవంగా కోడ్‌ను కలిగి ఉండరు. వారి పద్ధతులన్నీ వారసత్వంగా వచ్చే తరగతులలో అమలు చేయవలసి ఉంటుంది. తరగతులు ఎలా పరస్పరం వ్యవహరిస్తాయో ప్రమాణీకరించడం వారి పని . డెవలపర్‌లు ఒకరితో ఒకరు పరస్పరం సంభాషించడానికి వారి స్వంత ప్రమాణాలను కనిపెట్టాల్సిన అవసరం లేదు. ప్రతి ఒక్కరూ కొన్ని ప్రాథమిక ప్రమాణాలను నిర్వహించడం చాలా సౌకర్యవంతంగా ఉంటుంది. ఇది వివిధ ప్రోగ్రామర్లు వ్రాసిన తరగతులను జావా సృష్టికర్తలు వ్రాసిన తరగతులతో మాత్రమే కాకుండా ఇతర ప్రోగ్రామర్లు వ్రాసిన తరగతులతో కూడా సులభంగా సంభాషించడానికి అనుమతిస్తుంది.

ప్రమాణాలు శక్తివంతమైనవి.

"నేను అంగీకరిస్తున్నాను. సాధారణ ప్రమాణాలకు మద్దతు ఇవ్వడం అందరికీ ప్రయోజనకరం."