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 ஸ்ட்ரீம்கள் எவ்வளவு வசதியானவை மற்றும் சக்திவாய்ந்தவை என்பதை இந்த எடுத்துக்காட்டு விளக்குகிறது.