Anda di halaman 1dari 39

Input Output di Java

TUJUAN PEMBELAJARAN

1. Memahami konsep Input/Output di Java

2. Mengenal kelas – kelas yang berhubungan dengan IO

3. Mampu membuat program yang menerapkan konsep Input Output.


Program komputer terdiri dari tiga komponen utama, yaitu: input, proses, dan
output.
• Input: nilai yang kita masukan ke program
• Proses: langkah demi langkah yang dilakukan untuk mengelola input menjadi
sesuatu yang berguna
• Output: hasil pengolahan

Semua bahasa pemrograman telah menyediakan fungsi-fungsi untuk melakukan


input dan output. Java sendiri sudah menyediakan tiga class untuk mengambil
input:
1. Class Scanner
2. Class BufferReader
3. Class Console
Tiga class tersebut untuk mengambil input pada program berbasis teks (console).
Sedangkan untuk GUI menggunakan class yang lain seperti JOptionPane dan
inputbox pada form.
Mengambil Input dengan Class Scanner

 Scanner merupakan class yang menyediakan fungsi-fungsi untuk


mengambil input dari keyboard.

 Agar kita bisa menggunakan Scanner, kita perlu mengimpornya ke


dalam kode:

import java.util.Scanner;
package cobaScanner;
// mengimpor Scanner ke program
import java.util.Scanner;
public class DataKaryawan {
public static void main(String[] args) {
// deklarasi variabel
String nama, alamat;
int usia, gaji;
// membuat scanner baru
Scanner keyboard = new Scanner(System.in);
// Tampilkan output ke user
System.out.println("### Pendataan Karyawan PT. Petani Kode ###");
System.out.print("Nama karyawan: ");
// menggunakan scanner dan menyimpan apa yang diketik di variabel nama
nama = keyboard.nextLine();
// Tampilkan output lagi
System.out.print("Alamat: ");
// menggunakan scanner lagi
alamat = keyboard.nextLine();
System.out.print("Usia: ");
usia = keyboard.nextInt();
System.out.print("Gaji: ");
gaji = keyboard.nextInt();
// Menampilkan apa yang sudah simpan di variabel
System.out.println("--------------------");
System.out.println("Nama Karyawan: " + nama);
System.out.println("Alamat: " + alamat);
System.out.println("Usia: " + usia + " tahun");
System.out.println("Gaji: Rp " + gaji);
}
}
Penggunakan fungsi untuk mengambil data bergantung dari tipe data yang digunakan. Misal, tipe
datanya adalah String, maka fungsi atau method yang dipakai adalah nextLine(). Begitu juga
dengan tipe data lain, Integer menggunakan nextInt(), Double menggunakan nextDouble()
Mengambil Input dengan Class BufferReader

Class BufferReader sebenarnya tidak hanya untuk mengambil input dari


keyboard saja.

Class ini juga dapat digunakan untuk membaca input dari file dan jaringan.

Class ini terletak di dalam paket java.io.

import java.io.BufferedReader;
package Coba_BufferedReader;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ContohBufferReader {


public static void main(String[] args) throws IOException {
String nama;
// Membuat objek inputstream
InputStreamReader isr = new InputStreamReader(System.in);
// membuat objek bufferreader
BufferedReader br = new BufferedReader(isr);
// Mengisi varibel nama dengan Bufferreader
System.out.print("Inputkan nama: ");
nama = br.readLine();
// tampilkan output isi variabel nama
System.out.println("Nama kamu adalah " + nama);
}
Perbedaan BufferReader dengan Scanner terlihat dari fungsi atau method yang
dipakai.

Scanner menggunakan next(), sedangkan BufferReader menggunakan


readLine().

Lalu untuk tipe data integer, BufferReader menggunakan fungsi read() saja.
Mengambil Input dengan Class Console

Class Console hampir sama dengan BufferReader. Dia juga menggunakan fungsi
readLine() untuk mengambil input. Akan tetapi, Class ini hanya bisa digunakan di
lingkungan console saja, seperti Terminal dan CMD. Class Console tidak bisa
digunakan langsung di Netbeans. Maka dari itu, kita harus kompilasi secara manual.
Untuk menggunakan class ini, kita perlu mengimpornya terlebih dahulu.

import java.io.Console;
import java.io.Console;

public class InputConsole {


public static void main(String[] args) {
String nama;
int usia;
// membuat objek console
Console con = System.console();
// mengisi variabel nama dan usia dengan console
System.out.print("Inputkan nama: ");
nama = con.readLine();
System.out.print("Inputkan usia: ");
usia = Integer.parseInt(con.readLine());
// mengampilkan isi variabel nama dan usia
System.out.println("Nama kamu adalah: " + nama);
System.out.println("Saat ini berusia " + usia + " tahun");
}
Fungsi Integer.parseInt(con.readLine()) untuk tipe data integer.
Artinya, kita merubah tipe data String ke Integer. Karena Console tidak
memiliki nilai kembalian berupa integer untuk fungsi read().
Stream and File merupakan proses penulisan dan pembacaan data
sering yang di sebut dengan proses input dan output, dimana penulisan
data berarti mengalirkan data ke output dan menerima atau
mendapatkan data dari input. Penerapan dalam pemrograman java ini
selalu melakukan proses input dan output yaitu memindahkan byte
data dari satu system ke system lain. Data yang dibaca dari server yang
mengirim data tidak berbeda dengan membaca data dari sebuah file.
Java mengangani I/O secara berbeda dari bahasa-bahasa pemrograman
yang lainnya.
STREAM

 Stream merupakan dasar operasi input-output ( I/O ) dalam Java yang menggunakan package java.io
sebagai package utama. Stream adalah representasi abstrak dari input dan output device, dimana
aliran bytes akan ditransfer seperti file dalam harddisk, file pada sistem remote atau printer. Kita
dapat membaca data dari input stream, yang dapat berupa file, keyboard atau komputer remote.
Dalam Stream ini terdapat proses input dan output sebagai berikut :

 1. Input Stream

 2. Output Stream
INPUT STREAM

 Kelas java.io.InputStream adalah:

 public abstract class InputStream

 Adapun 2 method utama dari InputStream adalah :

• Read

Method ini digunakan untuk membaca stream.

• Close

Method ini digunakan untuk menutup koneksi input stream.


Dalam proses Penginputan Stream, terdapat pembagian dalam kelasnya, yaitu :

a) Byte Stream : digunakan untuk menangani data biner.

b) Character Stream : digunakan untuk menangani proses baca tulis karakter


Unicode. Kelas ini merupakan pengembangan dari kelas Byte Stream sehingga
lebih efisien. Data input dalam Stream ini berfungsi untuk saling melengkapi
dengan DataOutputStream, yaitu untuk mendapatkan data yang telah ditulis.
OUTPUT STREAM
 Subclass-subclass dari outputStream adalah :

- ByteArrayOutputStream: digunakan untuk menuliskan stream menjadi byte array.

- FileOutputStream : digunakan untuk menulis pada file

- FilterOutputStream :merupakan superclass dari subclass-subclass seperti DataOutputStream,


BufferOutputStream, PrintStream, CheckedOutputStream

- ObjectOutputStream : digunakan untuk menuliskan objek pada OutputStream.

- PipedOutputStream : digunakan untuk menjadi output dari PipedInputStream.

- Data Output dalam stream ini merupakan class yang menyediakan cara praktis untuk menuliskan tipe data
primitif ke output stream yang lebih mudah digunakan dalam penyelesaian program dalam java.
Byte Streams

 ByteStream Java digunakan untuk melakukan input dan output tipe data byte 8-
bit. Meskipun ada banyak kelas yang terkait dengan stream byte tetapi kelas yang
paling sering digunakan adalah, FileInputStream dan FileOutputStream.
import java.io.*;
public class CopyFile {
public static void main(String args[]) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("input.txt");
out = new FileOutputStream("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
 Kemudian, kita perlu memiliki sebuah file input.txt dengan mengikuti contoh berikut ini:

Ini Adalah Isi txt Untuk Uji Coba.

 Langkah selanjutnya, kompilasikan program di atas dan kemudian eksekusi program


tersebut, yang mana hasilnya akan membuat sebuat file output.txt dengan konten yang
sama seperti yang kita punya dalam input.txt. Jadi, mari tambahkan kode di atas dalam file
CopyFile.java dan lakukan hal seperti di bawah ini:

$javac CopyFile.java

$java CopyFile
Character Streams

 Java Byte Streams digunakan untuk mengoperasikan input dan output dari 8-bit
bytes, yang mana Character Stream pada Java digunakan untuk mengoperasikan
input dan output 16-bit Unicode. Meskipun ada banyak kelas yang terkait dengan
stream karakter tetapi kelas yang paling sering atau biasanya digunakan adalah,
kelas FileReader dan kelas FileWriter.

 Meskipun secara internal FileReader menggunakan fungsi FileInputStream dan


FileWriter menggunakan fungsi FileOutputStream tetapi, perbedaan utamanya
adalah FileReader membaca dua byte sekaligus dan sedangkan FileWriter
berfungsi untuk menulis dua byte sekaligus.
import java.io.*;
public class CopyFile {
public static void main(String args[]) throws IOException {
FileReader in = null;
FileWriter out = null;
try {
in = new FileReader("input.txt");
out = new FileWriter("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
 Sekarang kita harus memiliki file input.txt dengan konten berikut:

Ini Adalah Isi txt Untuk Uji Coba.

 Pada langkah selanjutnya, kompilasi dari kode program di atas dan yang jalankan,
yang akan menghasilkan file output.txt dengan konten yang sama seperti yang
kita miliki di input.txt. Kemudian, letakkan kode di atas dalam file CopyFile.java
dan lakukan hal berikut:

$javac CopyFile.java

$java CopyFile
STANDARD STREAM
Semua bahasa pemrograman menyediakan dukungan untuk I / O standar. didalam program pengguna
dapat mengambil input dari keyboard dan kemudian menghasilkan output di layar komputer. Java
menyediakan tiga standard stream berikut:
1. Standard Input
Standard Input digunakan untuk memasukkan data ke program pengguna dan biasanya keyboard
digunakan sebagai stream input standar dan direpresentasikan sebagai System.in.
2. Standard Output
Standard Output digunakan untuk mengeluarkan data atau output yang dihasilkan oleh program
pengguna. biasanya output akan muncul pada layar komputer. digunakan untuk stream keluaran standar
dan direpresentasikan sebagai System.out.
3. Standard Error
Standard Error digunakan untuk mengeluarkan data kesalahan yang dihasilkan oleh program pengguna
dan biasanya layar komputer digunakan untuk stream kesalahan standar dan direpresentasikan sebagai
System.err.
import java.io.*;
public class ReadConsole {
public static void main(String args[]) throws IOException {
InputStreamReader cin = null;
try {
cin = new InputStreamReader(System.in);
System.out.println("Masukkan Karakter, Ketik 'q' Untuk Keluar.");
char c;
do {
c = (char) cin.read();
System.out.print(c);
} while(c != 'q');
}finally {
if (cin != null) {
cin.close();
}
}
}
 Kemudian, simpan kode di atas dalam file ReadConsole.java dan coba kompilasi dan jalankan
seperti yang ditunjukkan pada program berikut. Program ini terus membaca dan mengeluarkan
karakter yang sama sampai kita menekan ‘q’.

$javac ReadConsole.java
$java ReadConsole
Masukkan Karakter, Ketik 'q' Untuk Keluar.
1
1
e
e
q

q
FILE

File merupakan data yang siap diinput dan diproses dalam Stream yang merupaka data
operasi dalam pemrograman. Keterkaitan antara keduanya, proses Input dan Ouput tetap
dilakukan walau dengan cara yang berbeda, dari subclass maupun method yang
digunakan.

FileInputStream digunakan untuk membaca data dari file yang merupakan turunan
langsung dari class InputStream dan FileOutputStream untuk menuliskan data ke file
merupakan turunan langsung dari class OutputStream.
Dalam file pun terdapat subclass – subclass dan
method, sama halnya dengan Stream, seperti :
1. Class File

2. File Writer

3. File Reader
Class File

Class File merupakan langkah awal dalam mempelajari proses input-output dengan
Java, karena File merupakan objek yang mewakili path, file, atau direktori pada
harddisk. Ada tiga cara membuat objek File, yaitu :

1. Menggunakan objek string sebagai argumen yang menginformasikan path untuk


file atau direktori.

2. Menggunakan dua langkah, dimana yang pertama untuk mendefinisikan direktori


dan yang kedua untuk file.

3. Menggunakan dua argumen, dimana yang pertama adalah argumen string yang
mendefinisikan direktori, dan yang kedua adalah argumen string yang
mendefinisikan nama file.
FILE WRITER

 Di dalam aplikasi web, disamping database, penggunaan file untuk menyimpan


data cukup banyak dilakukan karena kebutuhan penyimpanan data yang
sederhana cukup dengan menggunakan file. File Writer merupakan subclass dari
OutputStreamWriter yang merupakan subclass dari class abstract Writer. Class
FileWriter memiliki konstruktor yang umum seperti berikut :

a) FileWriter ( File objekfile );

b) FileWriter ( String pathkefile );

c) FileWriter ( String pathkefile, boolean append );


FILE READER

File Reader merupakan class yang dapat digunakan untuk membaca file teks.
Konstruktor dari FileReader :

- FileReader(File objekfile);

- FileReader(String pathkefile);

Method yang digunakan :

- Read(char[] array);

- Read(char[] array, int offset, int length);


Melihat Direktori
Menggunakan FileInputStream
Menggunakan BufferedInputStream
Menggunakan PushBackInputStream
Menggunakan Serialization
Tugas Laporan

 Buatlah laporan dari program-program yang sudah dikerjakan mengenai File Input Output,
isi laporan adalah kode program, output program dan penjelasan singkat mengenai
program.
 Kode-kode program yang diinsert di dalam laporan adalah :
1. Program Copy File slide 20
2. Program untuk melihat isi direktori slide 33
3. Program untuk Menggunakan File Input Stream slide 34
4. Program untuk menggunakan Buffered Input Stream slide 35
5. Program untuk menggunakan Push Back Input Stream slide 36
6. Program untuk menggunakan Serialization slide 37
Nama siswa yang

Anda mungkin juga menyukai