Anda di halaman 1dari 24

Input & Output

Dasar-dasar I/O
 Terdapat di paket java.io
 Di versi lama masih byte oriented
 Di versi baru sudah char oriented
 Proses I/O dilakukan dengan stream
 Stream = abstraksi yang dapat memberikan atau mendapatkan informasi
 Stream dapat dihubungkan dengan peralatan fisik yang terdapat dalam
sistem I/O Java, seperti : keyboard, file, layar console, dan lain-lain.
 Input : Keyboard, file, socket jaringan, com, mouse, webcam, mikrofon,
dan lainnya
 Output : monitor, speaker, file, socket jaringan, com, printer, dan lainnya
 Stream akan memudahkan kita dalam melakukan proses I/O, karena
kode program yang ditulis akan sama untuk masing-masing peralatan
fisik yang dihubungkan dengan stream alat tersebut
Stream
 Stream byte : digunakan untuk memberikan atau menyimpan informasi data
dalam bentuk byte/biner
 Stream karakter : digunakan ntuk memberikan atau menyimpan informasi data
dalam bentuk karakter
 Stream karakter menggunakan unicode
 Stream didefinisikan dengan 4 kelas abstrak : InputStream, OutputStream,
Reader, Writer
 InputStream, OutputStream : superclass untuk kelas-kelas yang termasuk
kategori stream byte
 Reader, Writer : superclass untuk kelas-kelas yang termasuk kategori stream
karakter
 Melalui proses inheritance, semua kelas yang diturunkan dari InputStream
maupun Reader akan memiliki method read() yang digunakan untuk pembacaan
data
 Semua kelas yang diturunkan dari Outputstream maupun Writer akan memiliki
method write () yang digunakan untuk penulisan data
Kelas-kelas Stream
STREAM BYTE STREAM KARAKTER
  BufferedReader
BufferedInputStream
 BufferedWriter
 BufferedOutputStream  CharArrayReader
 ByteArrayInputStream  CharArrayWriter
 ByteArrayOutputStream  FileReader
 DataInputStream  FileWriter
  FilterReader
DataOutputStream
 FilterWriter
 FileInputStream  InputStreamReader
 FileOutputStream  LineNumberReader
 FilterInputStream  OutputStreamWriter
 FilterOutputStream  PipedReader
  PipedWriter
InputStream
 PrintWriter
 OutputStream  Reader
 PipedInputStream  StringReader
 PipedOutputStream  StringWriter
  Writer
PrintStream
Stream yang telah terdefinisi
 Semua program java otomatis mengimport java.lang
 Paket java.lang mendefinisikan kelas System yang memanggil
aspek berkaitan runtime
 Contoh : Memanggil tanggal, Menuliskan sesuatu di layar, dll
 Kelas System mendefinisikan 3 variabel stream : in, out, dan err.
 Field atau data-data tersebut dideklarasikan sebagai public dan
static, sehingga tidak perlu dibentuk objek dari kelas System untuk
memanggilnya.
 System.out mengacu pada stream output standar yang defaultnya
berupa layar console
 System.in mengacu pada stream input standar, defaultnya
keyboard
 System.err mengacu pada stream error standar, yang berupa layar
console
Melakukan Input
 Input console dilakukan melalui pembacaan terhadap stream System.in
 Objek BufferedReader merupakan objek yang membungkus System.in melalui
InputStreamReader agar memperoleh karakter yang diketik melalui keyboard dan
ditampilkan ke layar console
 Constructor BufferedReader :
BufferedReader(Reader inputReader)
 Reader adalah kelas abstract maka hrs ada turunannya yang konkrit :
InputStreamReader yang mengkonversi byte ke karakter
 Constructor InputStreamReader
InputStreamReader(InputStream inputStream)
 inputStream dapat diisi dengan System.in
 Sehingga kodenya menjadi berikut :
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 Ada 3 pembacaan input :
 Membaca Input Data Karakter
 Membaca Input Data String
 Membaca Input Data Numerik
Membaca Input Data Karakter

class DemoInputKarakter {
public static void main(String[] args) throws IOException {
System.out.print("Masukkan sembarang karakter: ");
char ch;
InputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();
System.out.println("Karakter yang dimasukkan adalah \'" +
ch + "\'");
}
}
Membaca Input Data String

class DemoInputString {
public static void main(String[] args) throws IOException {
System.out.print("Masukkan nama Anda: ");
String nama;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
nama = br.readLine();
System.out.println("Halo " + nama +
", sudahkah Anda mengerti Java?");
}
}
Membaca Input Data Numerik
class DemoInputNumerik1 {
public static void main(String[] args) throws IOException {
System.out.print("Masukkan sebuah bilangan bulat: ");
String temp; int bilangan = 0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
// input data dianggap sebagai string
temp = br.readLine();
try {
// konversi dari string ke integer
bilangan = Integer.parseInt(temp);
} catch (NumberFormatException nfe) {
System.out.println("Data yang dimasukkan bukan bilangan bulat");
System.exit(1);}
System.out.println("Bilangan yang dimasukkan adalah " + bilangan); }}
Beberapa konversi dari String (misal:
String x)
 Ke Integer :
 Integer.parseint(x)
 Ke Double :
 Double.parseDouble(x)
Menampilkan Output

class DemoWrite {
public static void main(String[] args) {
int i = 'A';
byte b = 65;
char c = 'B';
System.out.write(i);
System.out.write(b);
System.out.write(c);
}
}
Mengenal Kelas PrintWriter
 Kelas ini yang direkomendasikan digunakan untuk menulis
ke layar console
 System.out hanya direkomendasikan untuk melacak
kesalahan program atau menuliskan contoh program
 PrintWriter adalah salah satu kelas stream yang berbasis
data karakter
 Constructor :
PrintWriter(OutputStream outputStream, boolean
flushOnNewLine)
flushOnNewLine adalah parameter boolean yang
menyatakan apakah stream output akan dibuang atau tidak
setiap kali method println() dipanggil
Contoh Penggunaan PrintWriter
class DemoPrintWriter {
public static void main(String[] args) {
// membuat objek PrintWriter
PrintWriter pw = new PrintWriter(System.out, true);
double d = 3.1416;
int i = 123;
byte b = 65;
char c = 'A';
String s = "Ini adalah string";
pw.println("Data bertipe double : " + d);
pw.println("Data bertipe int : " + i);
pw.println("Data bertipe byte : " + b);
pw.println("Data bertipe char : " + c);
pw.println("Data bertipe string : " + s);}}
Membaca/Menulis File
 Constructor yang digunakan untuk membaca:
FileInputStream(String fileName) throws FileNotFoundException
 Constructor yang digunakan untuk menulis:
FileOutputStream(String fileName) throws FileNotFoundException
 fileName menunjukkan file yang akan dibuka, jika file tidak ditemukan
constructor tersebut akan membangkitkan eksepsi FileNotFoundException
 Jika ada file bernama sama yang eksisting maka hasil penulisan file akan
menimpa file yang eksisting
 Jika sudah selesai menggunakan stream yang terhubung dengan file, maka
stream tersebut harus ditutup dengan method close().
 Untuk membaca data digunakan method read(), jika data terakhir dari file
ditemukan (EOF:End Of File), maka method read() akan menghasilkan nilai
-1.
Contoh membaca File
class DemoBacaFile { // membaca data dari dalam file
public static void main(String[] // dan menampilkan hasilnya ke layar
args) { console
try {
FileInputStream finput = null;
while ((data = finput.read()) != -1) {
int data; // ketika ditampilkan, data dikonversi
// membuka file ke tipe char
try { System.out.print((char) data);}
finput = new } catch (IOException ioe) {
FileInputStream("d:/INPUT.TXT");
} catch (FileNotFoundException System.out.println(ioe.getMessage());
fnfe) { return;}
System.out.println("File tidak // menutup file
try {
ditemukan.");
finput.close();
return; // keluar dari method} } catch (IOException ioe) {}}}
Contoh Menulis File
class DemoTulisFile { // menulis data ke dalam file
public static void main(String[] args) try {
{ for (int i=0; i<data.length(); i++) {
// data akan dikonversi per karakter
FileOutputStream foutput = null; foutput.write((int) data.charAt(i));
String data = "Baris pertama }
\nBaris kedua \nBaris ketiga"; } catch (IOException ioe) {
// membuka file System.out.println(ioe.getMessage());
try { return;
foutput = new }
// menutup file
FileOutputStream("d:/OUTPUT.TX
try {
T");} catch (FileNotFoundException
foutput.close();
fnfe) {
} catch (IOException ioe) {}
System.out.println("File tidak }
dapat terbentuk."); }
return; // keluar dari method}
Mengkopi File
class DemoSalinFile { // membaca data dari file input
public static void main(String[] args) { // dan memasukkannya ke dalam file output
FileInputStream finput = null; try {
FileOutputStream foutput = null; while ((data = finput.read()) != -1) {
int data; foutput.write(data);
// membuka file input }
try {
} catch (IOException ioe) {
finput = new FileInputStream("d:/FILE1.TXT");
} catch (FileNotFoundException fnfe) { System.out.println(ioe.getMessage());
System.out.println("File input tidak return;
ditemukan"); }
return; // keluar dari method}
// membuka file output // menutup file
try { try {
foutput = new finput.close();
FileOutputStream("d:/FILE2.TXT"); foutput.close();
} catch (FileNotFoundException fnfe) {
} catch (IOException ioe) {}
System.out.println("File output tidak dapat
terbentuk");
}
return; // keluar dari method} }
Kelas File
 Objek dari kelas File digunakan untuk memperoleh dan
memanipulasi informasi yang berkaitan dengan file, seperti hak
akses, waktu dan tanggal pembuatan atau modifikasi, lokasi
direktori, dsb.
 Beberapa constructor yang digunakan :
File(String path)
File(String path,String namaFile)
File(File objFile,String namaFile)
 Contoh penggunaan :
File file1=new File(“/java”);
File file2=new File(“/java”,”contoh.java”);
File file3=new File(file1,”contoh.java”);
 Kelas File tidak hanya digunakan untuk membentuk file saja tapi
juga dapat merepresentasikan direktori
Method Pada Kelas File
Nama Method Keterangan

exist() Mengembalikan nilai true jika file ada

getCanonicalpath() Mengembalikan nama lengkap

getName() Mengembalikan nama file relatif


getParent() Mengembalikan direktori yang ditempatinya

canRead() Mengembalikan nilai true apabila file dapat dibaca

canWrite() Mengembalikan nilai true apabila file dapat ditulis

lastModified() Mengembalikan waktu modifikasi yang dilakukan terhadap file

length() Mengembalikan ukuran file

isFile() True jika yang diakses adalah file

isDirectory() True jika yang diakses adalah direktori


Membuat File
 Selain menggunakan FileOutputStream maupun
FileWriter, dapat juga menggunakan method
createNewFile() dari kelas File untuk membuat file baru.
 Script :

class DemoMembuatFileBaru {
public static void main(String[] args)
throws IOException {
File f = new File("d:/sample.txt");
f.createNewFile();
}
}
Mengubah Nama File

class DemoUbahNamaFile {
public static void main(String[] args) {

File f = new File("d:/sample.txt");


f.renameTo(new File("d:/contoh.txt"));
}
}
Menghapus File

class DemoHapusFile {
public static void main(String[] args) {
File f = new File("d:/contoh.txt");
f.delete();
}
}
Menampilkan Daftar File dan Direktori
class DemoListDirektori {
public static void main(String[] args) {
String dir = "d:/javaCode";
File f = new File(dir);
String[] daftar = f.list();
java.util.Arrays.sort(daftar);
System.out.println("File dan direktori dalam D:\\javaCode");
System.out.println();
for (int i=0; i<daftar.length; i++) {
File fTemp = new File(dir + "/" + daftar[i]);
if (fTemp.isDirectory()) {
System.out.println(daftar[i] + "\t\t<DIR>");
} else {
System.out.println(daftar[i]);}}}}
Membuat Direktori Baru
class DemoMembuatDirektori {
public static void main(String[] args) {
File f = new File("d:/NewDir/NewSubDir");
f.mkdirs();
}
}

Anda mungkin juga menyukai