1. URLతరగతి

మేము I/O స్ట్రీమ్‌లతో పని చేయడం గురించి అధ్యయనం చేసాము. మేము ఫైల్‌లతో పని చేయడం గురించి అధ్యయనం చేసాము. తర్వాత మనం ఏమి చదువుకోవాలి? ఇంటర్నెట్‌తో సహా నెట్‌వర్క్‌తో పని చేయడం గురించి ఏమిటి? ఆశాజనకంగా ఉంది, కాదా?

జావాలో, ఫైల్‌లతో పని చేయడం కంటే ఇంటర్నెట్‌తో పని చేయడం కష్టం కాదు. బాగా, బహుశా కొంచెం.

ఇంటర్నెట్ వనరులతో పని చేయడానికి, జావాకు ప్రత్యేక తరగతి ఉంది — URL. మీరు ఇప్పుడు చూస్తారు, ఇది ఒక మలం వలె సులభం.

వెబ్ పేజీని పొందడం

ఇంటర్నెట్ నుండి కొన్ని టెక్స్ట్ ఫైల్‌ను డౌన్‌లోడ్ చేయడానికి మరియు స్క్రీన్‌పై దాని కంటెంట్‌లను ప్రదర్శించడానికి మీరు ఎన్ని కోడ్ లైన్‌లను వ్రాయాలని మీరు అనుకుంటున్నారు? 10? 100? 1000? లేదా బహుశా 5?

కోడ్ గమనిక
URL url = new URL("https://codegym.cc");
InputStream input = url.openStream();
byte[] buffer = input.readAllBytes();
String str = new String(buffer);
System.out.println(str);
పేజీకి మార్గంతో URL ఆబ్జెక్ట్‌ను సృష్టిస్తుంది URL ఆబ్జెక్ట్ నుండి
పొందుతుంది అన్ని బైట్‌లను చదివి బైట్‌ల శ్రేణిని అందిస్తుంది శ్రేణిని స్ట్రింగ్‌గా మార్చండి స్ట్రింగ్‌ను ప్రదర్శించండి InputStream


HTML ఫైల్ యొక్క కంటెంట్‌లు స్క్రీన్‌పై ప్రదర్శించబడతాయి:

కన్సోల్ అవుట్‌పుట్
<!DOCTYPE html><html lang="ru" class="light"><head>
    <meta charset="utf-8″>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1″>
    ...

పనిని పోల్చడం FileమరియుURL

URLసారూప్యంగా ఉంటుంది Fileలేదా Path, కానీ Pathఫైల్ సిస్టమ్‌లోని వనరుకి మార్గాన్ని నిల్వ చేస్తుంది మరియు URLఇంటర్నెట్‌లో వనరుకి మార్గాన్ని నిల్వ చేస్తుంది.

InputStreamపద్ధతికి ఒకే కాల్‌కి కృతజ్ఞతలు తెలుపుతూ వస్తువును పొందినప్పుడు అన్ని మాయాజాలం జరుగుతుంది openStream(). ఇది ఒక సాధారణ వస్తువు, మరియు మేము ఇప్పటికే లోపల మరియు వెలుపల అధ్యయనం చేసాము. మనం వస్తువును పొందిన తర్వాత ప్రతిదీ స్పష్టంగా కనిపిస్తుంది InputStream. అన్నింటికంటే, దాని నుండి డేటాను ఎలా పొందాలో మాకు ఇప్పటికే తెలుసు.

ఒకసారి చూడండి: మొదటి రెండు పంక్తులు మాత్రమే భిన్నంగా ఉంటాయి మరియు కొంచెం మాత్రమే. మరియు ఇప్పుడు మీరు దీన్ని చూడవచ్చు — ప్రామాణీకరణ యొక్క ప్రయోజనం మరియు డేటా స్ట్రీమ్‌ల గొలుసులతో పని చేయడం:

ఇంటర్నెట్‌తో పని చేస్తోంది ఫైల్‌తో పని చేస్తోంది
URL url = new URL("https://codegym.cc");
InputStream input = url.openStream();

byte[] buffer = input.readAllBytes();
String str = new String(buffer);
System.out.println(str);
File file = new File("c:\\readme.txt");
InputStream input = new FileInputStream(file);

byte[] buffer = input.readAllBytes();
String str = new String(buffer);
System.out.println(str);


2. URLConnectionతరగతి

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

కోడ్ గమనిక
URL url = new URL("https://codegym.cc");
URLConnection connection = url.openConnection();

// Get a stream for sending data
OutputStream output = connection.getOutputStream();
output.write(1); // Send data

// Get a stream for reading data
InputStream input = connection.getInputStream();
int data = input.read(); // Read data
పేజీకి మార్గంతో URL ఆబ్జెక్ట్‌ను సృష్టించండి
రెండు-మార్గం కనెక్షన్‌ని సృష్టించండి


అవుట్‌పుట్ స్ట్రీమ్‌ను పొందండి
అందులో డేటాను ఉంచండి


ఇన్‌పుట్ స్ట్రీమ్‌ను పొందండి
దాని నుండి డేటాను చదవండి

మేము ఇకపై url.openStream()ఇక్కడ పద్ధతిని పిలవలేమని గమనించండి. బదులుగా, మేము సుదీర్ఘ మార్గాన్ని తీసుకుంటాము:

  • URLConnection.openConnection()మేము మొదట పద్ధతిని ఉపయోగించి స్థిరమైన రెండు-మార్గం కనెక్షన్‌ను ఏర్పాటు చేస్తాము
  • connection.getOutputStream()అప్పుడు మేము పద్ధతిని ఉపయోగించి డేటాను పంపడానికి మరియు సర్వర్‌కు డేటాను పంపడానికి స్ట్రీమ్‌ను పొందుతాము
  • అప్పుడు మేము పద్ధతిని ఉపయోగించి డేటాను చదవడానికి స్ట్రీమ్‌ను పొందుతాము connection.getInputStream()మరియు దాని నుండి డేటాను చదవడం ప్రారంభిస్తాము.

వనరుల నిర్వహణ

try-with-resourcesఖచ్చితంగా చెప్పాలంటే, సురక్షితమైన నిర్వహణ కోసం మేము అన్ని స్ట్రీమ్‌లను ఒక బ్లాక్‌లో చుట్టాలి . InputStreamమరియు బేర్‌ను మరియు OutputStreamమరింత సౌకర్యవంతంగా చుట్టడం బాధించదు . ఉదాహరణకు, లో PrintStreamమరియు BufferedReader.

మేము అన్నింటినీ చేస్తే, మా కోడ్ ఇలా కనిపిస్తుంది:

URL url = new URL("https://codegym.cc");
URLConnection connection = url.openConnection();

// Send data
try (OutputStream output = connection.getOutputStream();
   PrintStream sender = new PrintStream(output))
{
   sender.println("Hello");
}

// Read data
try(InputStream input = connection.getInputStream();
   BufferedReader reader = new BufferedReader(new InputStreamReader(input)))
{
   while (reader.ready())
      System.out.println(reader.readLine());
}

3. నెట్వర్క్తో పని చేసే ఉదాహరణలు

ఇంటర్నెట్ నుండి ఏదైనా డౌన్‌లోడ్ చేద్దాం. మరియు దానిని డౌన్‌లోడ్ చేయడమే కాకుండా, దానిని డిస్క్‌లో సేవ్ చేయండి.

ఉదాహరణకు, Google హోమ్‌పేజీ నుండి డిస్క్‌కి చిత్రాన్ని సేవ్ చేసే ప్రోగ్రామ్‌ను వ్రాద్దాం.

సూత్రప్రాయంగా, ఇక్కడ సంక్లిష్టంగా ఏమీ లేదు. దాని సరళమైన రూపంలో, ఈ కోడ్ ఇలా ఉంటుంది:

ఫైల్‌ను డిస్క్‌లో సేవ్ చేస్తోంది
String image = "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
URL url = new URL(image);
InputStream input = url.openStream();

Path path = Path.of("c:\\GoogleLogo.png");
Files.copy(input, path);

మొదటి మూడు లైన్ల సహాయంతో, మేము ఇంటర్నెట్ వనరు నుండి డేటా స్ట్రీమ్‌ను అందుకుంటాము — చిత్రం నుండి.

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

Filesచివరకు, చివరి పంక్తి తరగతి యొక్క పద్ధతుల్లో ఒకటి copy. తరగతిలో Filesవాటిలో చాలా ఉన్నాయి. మేము ఉపయోగించిన ఈ పద్ధతి, బైట్ స్ట్రీమ్ ( InputStream)ని మొదటి పారామీటర్‌గా మరియు రెండవ పరామితిగా తీసుకుంటుంది - డేటా వ్రాయవలసిన ఫైల్ పేరు.

సిద్ధాంతపరంగా, URLచిత్రం చిన్నదైతే, ఈ కోడ్‌ను ఒకే లైన్‌లో కూడా వ్రాయవచ్చు:

స్ట్రీమ్ నుండి ఫైల్‌కి డేటాను కాపీ చేస్తోంది
Files.copy(
   new URL("https://www.google.com/logo.png").openStream(),
   Path.of("c:\\GoogleLogo.png")
);

అయితే, మీరు దీన్ని ఇలా వ్రాయవలసిన అవసరం లేదు , కానీ ఈ ఉదాహరణ జావాలో I/O స్ట్రీమ్‌లు ఎంత సౌకర్యవంతంగా మరియు శక్తివంతంగా ఉన్నాయో చూపిస్తుంది.