1. URL
kelas
Kami telah mempelajari cara bekerja dengan aliran I/O. Kami telah mempelajari bekerja dengan file. Apa yang harus kita pelajari selanjutnya? Bagaimana dengan bekerja dengan jaringan, termasuk Internet? Kedengarannya menjanjikan, bukan?
Di Jawa, bekerja dengan Internet tidak lebih sulit daripada bekerja dengan file. Yah, mungkin hanya sedikit.
Untuk bekerja dengan sumber daya Internet, Java memiliki kelas khusus — URL
. Ini sesederhana bangku, seperti yang akan Anda lihat sekarang.
Mendapatkan halaman web
Menurut Anda, berapa baris kode yang perlu Anda tulis untuk mengunduh beberapa file teks dari Internet dan menampilkan kontennya di layar? 10? 100? 1000? Atau mungkin 5?
Kode | Catatan |
---|---|
|
Membuat objek URL dengan jalur ke halaman Mengambil InputStream dari objek URL Membaca semua byte dan mengembalikan array byte Mengubah array menjadi string Menampilkan string |
Konten file HTML akan ditampilkan di layar:
Keluaran konsol |
---|
|
Membandingkan bekerja dengan File
danURL
URL
mirip dengan File
or Path
, tetapi Path
menyimpan jalur ke sumber daya di sistem file, dan URL
menyimpan jalur ke sumber daya di Internet.
Semua keajaiban terjadi saat kita mendapatkan InputStream
objek berkat satu panggilan ke openStream()
metode. Ini adalah objek biasa, dan kami telah mempelajarinya luar dalam. Semuanya menjadi jelas setelah kita mendapatkan objeknya InputStream
. Bagaimanapun, kita sudah tahu cara mendapatkan data darinya.
Coba lihat: hanya dua baris pertama yang berbeda, dan hanya sedikit. Dan sekarang Anda bisa melihatnya — keuntungan dari standardisasi dan bekerja dengan rangkaian aliran data:
Bekerja dengan Internet | Bekerja dengan file |
---|---|
|
|
2. URLConnection
kelas
Selain sekadar membaca data dari internet, kita juga bisa mengunggah data. Mengunggah data jauh lebih rumit daripada membacanya. Anda akan memerlukan beberapa metode lagi. Misalnya:
Kode | Catatan |
---|---|
|
Buat objek URL dengan jalur ke halaman Buat koneksi dua arah Dapatkan aliran keluaran Masukkan data ke dalamnya Dapatkan aliran masukan Baca data darinya |
Perhatikan bahwa kami tidak lagi memanggil url.openStream()
metode di sini. Sebagai gantinya, kami mengambil rute yang lebih panjang:
- Kami pertama-tama membuat koneksi dua arah yang stabil menggunakan
URLConnection.openConnection()
metode ini - Kemudian kami mendapatkan aliran untuk mengirim data menggunakan
connection.getOutputStream()
metode dan mengirim data ke server - Kemudian kami mendapatkan aliran untuk membaca data menggunakan
connection.getInputStream()
metode tersebut dan mulai membaca data darinya.
Pengelolaan sumber daya
Sebenarnya, kita harus membungkus semua aliran dalam satu try-with-resources
blok untuk penanganan yang aman. Dan tidak ada salahnya untuk membungkus yang telanjang InputStream
dan OutputStream
dengan sesuatu yang lebih nyaman. Misalnya dalam PrintStream
dan BufferedReader
.
Jika kita melakukan semua itu, maka kode kita akan terlihat seperti ini:
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. Contoh bekerja dengan jaringan
Ayo unduh sesuatu dari Internet. Dan tidak hanya mengunduhnya, tetapi menyimpannya ke disk.
Misalnya, mari kita menulis program yang menyimpan gambar dari beranda Google ke disk.
Prinsipnya, tidak ada yang rumit di sini. Dalam bentuknya yang paling sederhana, kode ini akan terlihat seperti ini:
Menyimpan file ke disk |
---|
|
Dengan bantuan tiga baris pertama, kami menerima aliran data dari sumber daya Internet — dari gambar.
Di baris keempat, kami membuat nama file tempat kami akan menyimpan gambar. Namanya bisa apa saja, tetapi ekstensi file harus sesuai dengan ekstensi gambar di Internet. Itu akan memungkinkan pemirsa gambar lokal untuk membukanya dengan benar.
Dan terakhir, baris terakhir adalah salah satu metode Files
kelas copy
. Kelas Files
memiliki beberapa dari mereka. Metode ini, yang kami gunakan, menggunakan aliran byte ( InputStream
) sebagai parameter pertamanya, dan sebagai parameter kedua — nama file tempat data harus ditulis.
Secara teoritis, jika gambarnya URL
pendek, maka kode ini bahkan dapat ditulis dalam satu baris:
Menyalin data dari aliran ke file |
---|
|
Tentu saja, Anda tidak harus menulisnya seperti ini, tetapi contoh ini menunjukkan betapa mudah dan kuatnya aliran I/O di Java.
GO TO FULL VERSION