pemrograman jaringan – modul 3 stream

advertisement
PEMROGRAMAN JARINGAN – MODUL 3
STREAM
Pemrograman Jaringan selalu melakukan input dan output: memindahkan byte data dari
satu sistem ke sistem 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.
Input/Output dalam Java dipaketkan dalam java.io. Selain kelas-kelas, paket ini juga
mengandung interface yang menangani aliran (stream) data output dan input. Data
tersebut tersimpan dalam file, memori, disk bisa dalam bentuk suara, gambar, maupun
karakter.
Kelas java.io.Output Stream adalah:
public abstract class OutputStream
Sedangkan method-method nya adalah:
public abstract void write(int b) throws IOException
public void write(byte[] data) throws IOException
public void write(byte[] data, int offset, int length)
throws IOException
public void flush( ) throws IOException
public void close( ) throws IOException
public static void generateCharacters(OutputStream out)
throws IOException {
int firstPrintableCharacter
= 33;
int numberOfPrintableCharacters = 94;
int numberOfCharactersPerLine
= 72;
int start = firstPrintableCharacter;
while (true) { /* infinite loop */
for (int i = start; i < start+numberOfCharactersPerLine; i++) {
out.write((
(i-firstPrintableCharacter) % numberOfPrintableCharacters)
+ firstPrintableCharacter);
}
out.write('\r'); // carriage return
out.write('\n'); // linefeed
start = ((start+1) - firstPrintableCharacter)
% numberOfPrintableCharacters + firstPrintableCharacter;
}
}
Kelas java.io.InputStream adalah:
public abstract class InputStream
Sedangkan method-methodnya adalah:
public abstract int read( ) throws IOException
public int read(byte[] input) throws IOException
public int read(byte[] input, int offset, int length) throws
IOException
public long skip(long n) throws IOException
public int available( ) throws IOException
public void close( ) throws IOException
Kelas stream pada java.io dibagi menjadi 2 bagian:
W Character stream.
W Byte stream..
Byte Stream
Kelas dan interface ini digunakan untuk menangani data biner. Secara hirarki terdapat
struktur kelas sebagai berikut:
Input Stream
ByteArrayInputStream
InputStream
FileInputStream
PipedInputStream
FilterInputStream
SequenceInputStream
ObjectInputStream
StringBufferInputStream
LineNumberInputStream
DataInputStream
BufferedInputStream
PushbackInputStream
Output Stream
OutputStream
FileOutputStream
PipedOutputStream
FilterOutputStream
ObjectOutputStream
DataOutputStream
ByteArrayOutputStream
PrintStream
BufferedOutputStream
Character Stream
Kelompok kelas ini digunakan untuk menangani proses baca tulis karakter Unicode.
Kelas ini merupakan pengembangan dari kelas Byte Stream sehingga lebih efisien.
Terdiri dari 2 kelas:
Reader
Reader
PipedReader
BufferedReader
CharArrayReader
InputStreamReader
StringReader
FilterReader
LineNumberReader
FileReader
PushbackReader
Writer
Writer
PrintWriter
BufferedWriter
CharArrayWriter
OutputStreamWriter
PipedWriter
StringWriter
FilterWriter
FileWriter
Stream Standard
Kelas java.lang berkaitan standar input, output dan error. System.in merupakan objek
dari InputStream dan System.out dan System.err merupakan objek dari PrintStream.
Dalam java cara membaca inputan dari keyboard adalah menggunakan System.in. Agar
mempermudah proses maka obyek System.in dibungkus dengan obyek BufferedReader
dengan cara:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
Kita telah memperoleh obyek untuk menangani aliran karakter (character stream) yang
memiliki method-method seperti misalnya read() untuk membaca inputan karakter. Jika
mencapai end of stream maka akan menghasilkan nilai -1.
Contoh:
import java.io.*
class BacaKarakter(){
public static void main(String[] args){
char c;
try{
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println(“Masukkan karakter (akhiri dengan
‘q’) : “);
do {
c = (char) br.read();
System.out.println(“Karakter terbaca : “+c);
} while (c != ‘q’);
} catch(IOException e){
System.out.println(“Ada error IO”);
System.exit(0);
}
}
}
Untuk membaca String (menggunakan try … catch … )
import java.io.*
class BacaString(){
public static void main(String[] args){
String str;
try{
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println(“Masukkan karakter (akhiri dengan
\”end\”) : “);
do {
str = br.readLine();
System.out.println(“Karakter terbaca : “+c);
} while (c != ‘q’);
} catch(IOException e){
System.out.println(“Ada error IO”);
System.exit(0);
}
}
}
Kenapa menggunakan try catch? Karena operasi I/O dalam java harus melemparkan
Exception, yaitu IOException.
Untuk membaca String (menggunakan throws exception)
import java.io.*
class BacaString(){
public static void main(String[] args) throws IOExcpetion{
String str;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println(“Masukkan karakter (akhiri dengan
\”end\”) : “);
do {
str = br.readLine();
System.out.println(“Karakter terbaca : “+c);
} while (c != ‘q’);
}
}
Cara menampilkan Output ke Layar
Cara menampilkan Output ke layar adalah dengan menggunakan System.out.print()
atau System.out.println().
Cara membaca String dan kemudian mengkonvertnya ke dalam tipe data numerik lain
Kita tetap menggunakan perintah :
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str = br.readLine();
int panjang = new Integer.parseInt(str);
int lebar = new Integer(str).intValue();
Untuk menkonvert dari numerik ke String:
int i = 100;
String str = new String.valueOf(i);
Operasi File
Di dalam java operasi file menggunakan kelas java.io.File. Kelas ini memiliki
konstruktor umum yaitu: File(String namafile). Sedangkan method-method umumnya
adalah:
-
public
public
public
public
public
public
public
public
public
public
public
public
boolean canRead()
boolean canWrite()
boolean createNewFile()
boolean delete()
boolean exists()
boolean isFile()
boolean isDirectory()
long lastModified()
long length()
boolean mkdir()
boolean mkdirs()
boolean renameTo(File newfilename)
Dan masih banyak lagi yang bisa dilihat di javadoc
Contoh program:
import java.io.*;
class cobaFile{
public static void main(String[] args) throws IOException {
if(args.length != 1){
System.out.println("Usage : java cobaFile <filename>");
System.exit(1);
}
File f = new File(args[0]);
System.out.println("Nama : "+f.getName());
if(f.exists()) System.out.println("File sudah ada!");
else {
System.out.println("File belum ada, buat baru…");
if(f.createNewFile()) System.out.println("Pembuatan
selesai");
else {
System.out.println("Pembuatan gagal!");
System.exit(0);
}
}
System.out.println("File dapat dibaca ? "+f.canRead());
System.out.println("File dapat ditulisi ? "+f.canWrite());
System.out.println("File adalah file ? "+f.isFile());
System.out.println("File adalah direktori ? "+f.isDirectory());
java.util.Date d = new java.util.Date(f.lastModified());
System.out.println("Last modified : "+d.toString());
System.out.println("File size : "+f.length());
}
}
Contoh untuk mengganti nama file (rename file):
import java.io.*;
class cobaFile2{
public static void main(String[] args) {
if(args.length != 2){
System.out.println("Usage : java cobaFile2 <source>
<dest>");
System.exit(1);
}
File f = new File(args[0]);
if(f.renameTo(new File(args[1])))
System.out.println(“Success!”);
else System.out.println(“Failed!”);
}
}
Contoh untuk membuat direktori:
import java.io.*;
class cobaFile3{
public static void main(String[] args) {
if(args.length != 1){
System.out.println("Usage : java cobaFile3 <dir>");
System.exit(1);
}
File f = new File(args[0]);
if(f.mkdir()) System.out.println(“Success!”);
else System.out.println(“Failed!”);
}
}
Contoh membaca file:
import java.io.*;
class cobaFile4{
public static void main(String[] args) {
if(args.length != 1){
System.out.println("Usage : java cobaFile4
<filetoread>");
System.exit(1);
}
try{
FileReader f = new FileReader(args[0]);
BufferedReader r = new BufferedReader(f);
String s = null;
while((s=r.readLine())!=null){
System.out.println(s);
}
r.close();
f.close();
} catch(FileNotFoundException e){
System.out.println(“File not found!”);
System.exit(1);
} catch(IOException e){
System.out.println(“IO Error!”);
System.exit(1);
}
}
}
Contoh menulis ke file:
import java.io.*;
class cobaFile5{
public static void main(String[] args) {
if(args.length != 1){
System.out.println("Usage : java cobaFile5
<filetowrite>");
System.exit(1);
}
try{
FileWriter f = new FileWriter(args[0]);
BufferedWriter r = new BufferedWriter(f);
String s = “percobaan menulis 1 2 3 4 sukses!”;
r.write(s);
r.close();
f.close();
} catch(IOException e){
System.out.println(“IO Error!”);
System.exit(1);
}
}
}
Download