"Chào, Amigo!"
"Chào, Ellie!"
"Ngươi có vẻ rất hài lòng với chính mình ngày hôm nay."
"Hê, Bilaabo bị ốm."
"Vì vậy, anh ấy không thể giải thích cho bạn một loạt những điều thú vị, hữu ích và cần thiết. Đã đến lúc bạn phải mặc quần người máy lớn vào."
"Uh-huh. Tôi hứa sẽ tự mình tìm ra tất cả. Bilaabo đã cho tôi một liên kết."
"Được, tốt. Vậy tôi sẽ kể cho bạn nghe một chuyện thú vị."
"Cụ thể là cách tải xuống video từ Internet."
"Để làm việc với Internet, Java có một lớp đặc biệt gọi là URL. Đây là cách sử dụng lớp này để tải xuống một tệp:"
1) Trước tiên, bạn cần chỉ định đúng URL của máy chủ bạn cần.
2) Sau đó, bạn cần sử dụng URL để thiết lập kết nối với máy chủ.
3) Sau đó gửi nội dung yêu cầu nếu đó là yêu cầu POST. Hoặc bạn có thể bỏ qua bước này nếu đó là yêu cầu NHẬN.
4) Cuối cùng, đọc phản hồi của máy chủ.
"Đây là giao diện của một tệp tải xuống đơn giản:"
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
URLConnection connection = url.openConnection(); // Establish a connection
// Get an OutputStream in order to write the request to it
OutputStream outputStream = connection.getOutputStream();
outputStream.write(1);
outputStream.flush();
// Get an InputStream in order to read the response from it
InputStream inputStream = connection.getInputStream();
Files.copy(inputStream, new File("c:/google.png").toPath());
"Đầu tiên, chúng tôi thiết lập kết nối với máy chủ bằng cách nhận đối tượng URLConnection ."
"Sau đó, chúng tôi nhận được OutputStream mà yêu cầu cần được ghi vào. Và chúng tôi viết một cái gì đó cho nó."
"Sau đó, chúng tôi nhận được đối tượng InputStream đại diện cho phản hồi, từ đó chúng tôi đọc chính phản hồi đó. Chúng tôi sử dụng phương thức Files.copy để lưu dữ liệu đã gửi vào tệp «c:/google.png»."
"Vâng, tôi hiểu. «write(1)» là gì?"
"Chà, tôi đã bao gồm điều đó để cho bạn thấy rằng bạn có thể viết gì đó ở đó. Bạn thực sự không cần phải viết gì trong yêu cầu để tải xuống tệp. Bạn có thể ngay lập tức nhận được một InputStream và bắt đầu đọc phản hồi từ đó. Đối tượng URL thậm chí còn có một phương thức openStream() ngay lập tức trả về một đối tượng InputStream. Nhưng phương thức này chỉ phù hợp với các yêu cầu GET. Ví dụ:"
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();
Files.copy(inputStream, new File("c:/google.png").toPath());
"Thật thú vị! Tôi không nghĩ việc tải xuống một tệp lại dễ dàng như vậy."
"Chà, không ai thường làm như thế này, vì các tệp có thể lớn và mất nhiều thời gian để tải xuống."
"Có khá nhiều khung giúp đơn giản hóa đáng kể việc làm việc với các tệp, nhưng tôi chưa sẵn sàng để nói về chúng bây giờ. Khi khác."
GO TO FULL VERSION