"హాయ్, అమిగో, మరోసారి."

"మీకు నమస్కారం, రిషీ. ఈరోజు పాఠం దేని గురించి?"

"ఈ రోజు నేను మీకు రీడర్ మరియు రైటర్ గురించి చెప్పబోతున్నాను."

"అయితే, రిషీ, నాకు వారి గురించి దాదాపు ప్రతిదీ తెలుసు!"

"పునరావృతం నేర్చుకునే తల్లి."

"హ్మ్. సరే, సరే."

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

"ఒకటి పాత్రల కోసం, మరొకటి బైట్‌ల కోసం. నాకు గుర్తుంది."

"అంతే కాదు. ఈ తరగతులు టెక్స్ట్ మరియు స్ట్రింగ్‌లతో పని చేయడానికి ప్రత్యేకంగా రూపొందించబడ్డాయి. ఈరోజు మనం ఈ వియుక్త తరగతుల యొక్క రెండు క్లాసిక్ అమలులను పరిశీలిస్తాము: FileReader మరియు FileWriter ."

" ఫైల్ రీడర్ క్లాస్ యొక్క పద్ధతులు ఇక్కడ ఉన్నాయి :"

పద్ధతి వివరణ
int read() స్ట్రీమ్ నుండి ఒక అక్షరాన్ని చదివి, దానిని తిరిగి ఇస్తుంది.
int read(char cbuf[], int offset, int length) అక్షరాల శ్రేణిని చదువుతుంది, చదివిన అక్షరాల సంఖ్యను అందిస్తుంది.
boolean ready() స్ట్రీమ్ నుండి చదవడం సాధ్యమైతే నిజమని చూపుతుంది.
void close() ఇన్‌పుట్ స్ట్రీమ్‌ను మూసివేస్తుంది.
int read(java.nio.CharBuffer target) అక్షరాల సమితిని బఫర్‌లో చదవండి.
int read(char cbuf[]) అక్షరాల శ్రేణిని చదువుతుంది.
long skip(long n) స్ట్రీమ్‌లో n అక్షరాలను దాటవేస్తుంది.
String getEncoding() స్ట్రీమ్ యొక్క ప్రస్తుత ఎన్‌కోడింగ్‌ను అందిస్తుంది.

"సరే, నాకు ఇవన్నీ దాదాపు తెలుసు. అయితే ఫైల్‌రైటర్ గురించి ఏమిటి?"

పద్ధతి వివరణ
void write(int c) స్ట్రీమ్‌కి ఒక అక్షరాన్ని వ్రాస్తాడు.
void write(char cbuf[], int off, int len) స్ట్రీమ్‌కు అక్షరాల శ్రేణిని వ్రాస్తుంది.
void write(char cbuf[]) స్ట్రీమ్‌కు అక్షరాల శ్రేణిని వ్రాస్తుంది.
void write(String str, int off, int len) స్ట్రింగ్‌లో కొంత భాగాన్ని స్ట్రీమ్‌కి వ్రాస్తుంది.
void write(String str) స్ట్రీమ్‌కు స్ట్రింగ్‌ను వ్రాస్తుంది.
void flush() మెమరీలో కాష్ చేసిన ప్రతిదాన్ని డిస్క్‌కి వ్రాస్తుంది.
void close() ప్రవాహాన్ని మూసివేస్తుంది.
String getEncoding() స్ట్రీమ్ యొక్క ప్రస్తుత ఎన్‌కోడింగ్‌ను అందిస్తుంది.

"అది నాకు తెలుసు!"

"అది అద్భుతంగా ఉంది. అప్పుడు ఒక ఆసక్తికరమైన ఉదాహరణ చూద్దాం, తర్వాత డియెగో మీకు మరిన్ని పనులు ఇస్తాడు."

"మీరు ఫైల్‌ని లైన్‌ వారీగా ఎలా చదువుతారు? మీరు కోడ్‌ని వ్రాయగలరా?"

"సులభం, చూడు:"

కోడ్
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

"హ్మ్మ్. చెడ్డది కాదు."

"చెడు కాదా? అంతా చాలా సింపుల్‌గా మరియు అందంగా ఉంది. ఒప్పుకోండి, రిషీ—నేను ఇప్పటికే I/O థ్రెడ్‌లపై అద్భుతమైన నైపుణ్యాన్ని కలిగి ఉన్నాను. కాబట్టి ఇక్కడ ఏమి మెరుగుపరచవచ్చు?"

"సరే, ఉదాహరణకు, మీరు ఇలా చేయవచ్చు:"

రిషి కోడ్
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"హ్మ్మ్. అది చిన్నది. మరియు ఈరోజే మీరు ఈ పద్ధతులన్నింటి గురించి నాకు చెప్పారు. నేను దానిని మళ్లీ వర్క్ చేస్తాను. పాఠానికి ధన్యవాదాలు, రిషీ."

"అదృష్టం, అమిగో."