15
Eksplorasi
java.io
Bab
ini akan mengeksplorasi paket java.io,
yang menyediakan dukungan untuk operasi-operasi I/O.
Soal dan
Penyelesaian
1.
Tulislah
sebuah program yang mendemonstrasikan beberapa metode dari kelas File.
Penyelesaian
// Mendemonstrasikan beberapa metode dari kelas File.
import java.io.File;
public class
DemoKelasFile {
static void p(String s) {
System.out.println(s);
}
public static void main(String args[]) {
File f1 = new File("/java/COPYRIGHT");
p("Nama File: " +
f1.getName());
p("Path: " + f1.getPath());
p("Abs Path: " +
f1.getAbsolutePath());
p("Parent: " + f1.getParent());
p(f1.exists() ?
"ada" : "tidak ada");
p(f1.canWrite() ? "writeable" : "tidak writeable");
p(f1.canRead() ? "readable" : "tidak readable");
p((f1.isDirectory() ? "tidak sebuah direktori" :
" sebuah direktori"));
p(f1.isFile() ? " file normal" : "tidak
file normal");
p(f1.isAbsolute() ? " absolut" : "tidak absolut");
p("File terakhir dimodifikasi:
" + f1.lastModified());
p("Ukuran file: " +
f1.length() + " Byte");
}
}
Keluaran Program
Nama File: COPYRIGHT
Path: \java\COPYRIGHT
Abs Path: E:\java\COPYRIGHT
Parent: \java
ada
writeable
readable
tidak sebuah direktori
tidak file normal
tidak absolut
File terakhir dimodifikasi: 1392178421695
Ukuran file: 0 Byte
2.
Tulislah
sebuah program yang mendemonstrasikan penggunaan metode list untuk memeriksa isi sebuah direktori.
Penyelesaian
// Menggunakan metode list.
import java.io.File;
public class
DemoMetodeList {
public static void main(String args[]) {
String namadir = "D:/master";
File f1 = new File(namadir);
if (f1.isDirectory()) {
System.out.println("Direktori
dari " + namadir);
String s[] = f1.list();
for (int i=0; i <
s.length; i++) {
File f = new File(namadir + "/" +
s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + " adalah
sebuah direktori");
}
else {
System.out.println(s[i] + " adalah
sebuah file");
}
}
}
else {
System.out.println(namadir + " bukan
sebuah direktori");
}
}
}
Keluaran Program
Direktori dari D:/master
9dba416cea17bb4c129ebff6170d0df4.zip
adalah sebuah file
Adobe CS5 adalah sebuah
direktori
ADOBE ILLUSTRATOR CS 2 adalah sebuah direktori
Adobe Illustrator CS + serial
adalah sebuah direktori
Adobe PageMaker 7.0 adalah
sebuah direktori
Adobe_PageMaker_7.x adalah
sebuah direktori
android-studio-bundle-130.737825-windows.exe
adalah sebuah file
Bonus Font adalah sebuah
direktori
CyberLink YouCam Deluxe
4.0.913.12934 adalah sebuah direktori
Delphi 2010 adalah sebuah
direktori
Delphi7 adalah sebuah
direktori
3. Tulislah sebuah program yang menunjukkan bagaimana
membaca satu byte, sebuah array yang memuat byte-byte, dan sebuah subrentang
dari array byte tersebut. Program juga mengilustrasikan bagaimana menggunakan
metode available untuk menentukan
jumlah byte yang tersisa, dan bagaimana menggunakan metode skip untuk melompati byte-byte yang tidak diinginkan.
Penyelesaian
// Mendemonstrasikan FileInputStream.
import java.io.*;
public class
DemoFileInputStream {
public static void main(String args[]) throws IOException {
int ukuran;
InputStream f =
new FileInputStream("DemoJava.java");
System.out.println("Total Byte yang tersedia: " +
(ukuran =
f.available()));
int n = ukuran/40;
System.out.println( n +
" byte pertama dari file yang dibaca oleh
read");
for (int i=0; i < n;
i++) {
System.out.print((char) f.read());
}
System.out.println("\nMasih tersedia: " + f.available());
System.out.println("Membaca " + n +
" berikutnya dengan read(b[])");
byte b[] = new byte[n];
if (f.read(b) != n) {
System.err.println("tidak
dapat membaca " + n + " byte.");
}
System.out.println(new String(b, 0, n));
System.out.println("\nMasih tersedia: " + (ukuran = f.available()));
System.out.println("Melompati setengah dari
byte yang tersisa dengan skip()");
f.skip(ukuran/2);
System.out.println("Masih tersedia: " + f.available());
System.out.println("Membaca " + n/2 + " ke akhir array");
if (f.read(b, n/2, n/2) != n/2) {
System.err.println("Tidak
dapat membaca " + n/2 + " byte.");
}
System.out.println(new String(b, 0, b.length));
System.out.println("\nMasih tersedia: " + f.available());
f.close();
}
}
4. Tulislah sebuah program yang menciptakan sebuah
buffer byte dengan terlebih dahulu menciptakan sebuah String dan kemudian menggunakan metode getBytes untuk mengekstrak array byte ekivalen. Program kemudian
menciptakan tiga file. Pertama, file1.txt,
akan memuat setiap byte dari array byte. Kedua, file2.txt, akan memuat keseluruhan himpunan byte. Ketiga dan
terakhir, file3.txt, hanya akan
memuat seperempat terakhir dari keseluruhan himpunan byte.
Penyelesaian
// Mendemonstrasikan FileOutputStream.
import java.io.*;
public class
DemoFileOutputStream {
public static void main(String args[]) throws IOException {
String sumber = "Sekarang saatnya muda-mudi Indonesia\n"
+ " bersatu membangun bangsa dan negara tanpa
perlu\n"
+ " banyak bertengkar di media yang tidak ada
habisnya.";
byte buf[] = sumber.getBytes();
OutputStream f0 = new FileOutputStream("file1.txt");
for (int i=0; i <
buf.length; i += 2) {
f0.write(buf[i]);
}
f0.close();
OutputStream f1 = new FileOutputStream("file2.txt");
f1.write(buf);
f1.close();
OutputStream f2 = new FileOutputStream("file3.txt");
f2.write(buf,buf.length-buf.length/4,buf.length/4);
f2.close();
}
}
Keluaran Program
Isi
dari file1.txt
Skrn aty uamd noei
braummagnbns a eaatnapru
aykbrega imdayn ia d aina
Isi
dari file2.txt
Sekarang saatnya muda-mudi
Indonesia
bersatu membangun bangsa dan
negara tanpa perlu
banyak bertengkar di media
yang tidak ada habisnya.
Isi
dari file3.txt
di media yang tidak ada
habisnya.
5. Tulislah sebuah program yang mengilustrasikan
penggunaan ByteArrayInputStream
untuk mengimplementasikan metode mark
dan reset. Jika mark tidak dipanggil, maka reset
akan menetapkan pointer aliran untuk menunjuk ke awal aliran, yang pada kasus
ini merupakan awal dari array byte yang dilewatkan kepada konstruktor.
Penyelesaian
import java.io.*;
public class
DemoByteArrayInputStreamReset {
public static void main(String args[]) throws IOException {
String tmp = "abc";
byte b[] = tmp.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(b);
for (int i=0; i<2;
i++) {
int c;
while
((c = in.read()) != -1) {
if (i == 0) {
System.out.print((char) c);
}
else {
System.out.print(Character.toUpperCase((char) c));
}
}
System.out.println();
in.reset();
}
}
}
Keluaran Program
abc
ABC
6. Tulislah sebuah program yang mengilustrasikan
penggunaan ByteArrayOutputStream.
Penyelesaian
// Demonstrate ByteArrayOutputStream.
import java.io.*;
public class
DemoByteArrayOutputStream {
public static void main(String args[]) throws
IOException {
ByteArrayOutputStream f = new ByteArrayOutputStream();
String s = "Ini akan
ditempatkan ke dalam array";
byte buf[] = s.getBytes();
f.write(buf);
System.out.println("Buffer sebagai sebuah string");
System.out.println(f.toString());
System.out.println("Ke dalam array");
byte b[] = f.toByteArray();
for (int i=0;
i<b.length; i++) {
System.out.print((char) b[i]);
}
System.out.println("\nKe sebuah OutputStream()");
OutputStream f2 = new FileOutputStream("test.txt");
f.writeTo(f2);
f2.close();
System.out.println("Melakukan reset");
f.reset();
for (int i=0; i<3;
i++)
f.write('X');
System.out.println(f.toString());
}
}
Keluaran Program
Buffer sebagai sebuah string
Ini akan ditempatkan ke dalam
array
Ke dalam array
Ini akan ditempatkan ke dalam
array
Ke sebuah OutputStream()
Melakukan reset
XXX
7. Tulislah sebuah program yang mengilustrasikan
penggunaan BufferedInputStream.
Penyelesaian
// Menggunakan masukan tersangga.
import java.io.*;
public class
DemoBufferedInputStream {
public static void main(String args[]) throws
IOException {
String s = "©
adalah simbol hak cipta " +
"tetapi ini © bukan simbol hak cipta.\n";
byte buf[] = s.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(buf);
BufferedInputStream f = new BufferedInputStream(in);
int c;
boolean ditandai = false;
while ((c = f.read()) != -1) {
switch(c) {
case '&':
if (!ditandai) {
f.mark(32);
ditandai = true;
}
else {
ditandai = false;
}
break;
case ';':
if (ditandai) {
ditandai = false;
System.out.print("(c)");
}
else
System.out.print((char) c);
break;
case ' ':
if (ditandai) {
ditandai = false;
f.reset();
System.out.print("&");
}
else
System.out.print((char) c);
break;
default:
if (!ditandai)
System.out.print((char) c);
break;
}
}
}
}
Keluaran Program
(c) adalah simbol hak cipta
tetapi ini © bukan simbol hak cipta.
8. Tulislah sebuah program yang mendemonstrasikan
penggunaan DataOutputStream dan DataInputStream.
Penyelesaian
import java.io.*;
public class
DemoDataIOStream {
public static void main(String args[])
throws IOException {
FileOutputStream fout = new FileOutputStream("Test.dat");
DataOutputStream out = new DataOutputStream(fout);
out.writeDouble(98.6);
out.writeInt(1000);
out.writeBoolean(true);
out.close();
FileInputStream fin = new FileInputStream("Test.dat");
DataInputStream in = new DataInputStream(fin);
double d = in.readDouble();
int i = in.readInt();
boolean b = in.readBoolean();
System.out.println("Berikut adalah nilai-nilai di dalam
Test.dat: " +
d + " " + i +
" " + b);
in.close();
}
}
Keluaran Program
Berikut adalah nilai-nilai di
dalam Test.dat: 98.6 1000 true
9. Tulislah sebuah program yang mendemonstrasikan
penggunaan FileWriter.
Penyelesaian
// Demonstrasi FileWriter.
import java.io.*;
public class
DemoFileWriter {
public static void main(String args[]) throws IOException {
String sumber = "Sekarang
saatnya muda-mudi Indonesia\n"
+ " bersatu membangun bangsa dan negara tanpa
perlu\n"
+ " banyak bertengkar di media yang tidak ada
habisnya.";
char buffer[] = new char[sumber.length()];
sumber.getChars(0,
sumber.length(), buffer, 0);
FileWriter f0 = new FileWriter("file1.txt");
for (int i=0; i <
buffer.length; i += 2) {
f0.write(buffer[i]);
}
f0.close();
FileWriter f1 = new FileWriter("file2.txt");
f1.write(buffer);
f1.close();
FileWriter f2 = new FileWriter("file3.txt");
f2.write(buffer,buffer.length-buffer.length/4,buffer.length/4);
f2.close();
}
}
Keluaran Program
Isi
dari file1.txt
Skrn aty uamd noei
braummagnbns a eaatnapru
aykbrega imdayn ia d aina
Isi
dari file2.txt
Sekarang saatnya muda-mudi
Indonesia
bersatu membangun bangsa dan
negara tanpa perlu
banyak bertengkar di media yang
tidak ada habisnya.
Isi
dari file3.txt
di media yang tidak ada
habisnya.
10. Tulislah sebuah program yang mendemonstrasikan
penggunaan CharArrayReader.
Penyelesaian
// Demonstrasi CharArrayReader.
import java.io.*;
public class
DemoCharReader {
public static void main(String args[]) throws
IOException {
String tmp = "abcdefghijklmnopqrstuvwxyz";
int length = tmp.length();
char c[] = new char[length];
tmp.getChars(0, length, c, 0);
CharArrayReader masukan1 = new CharArrayReader(c);
CharArrayReader masukan2 = new CharArrayReader(c, 0, 5);
int i;
System.out.println("masukan1 adalah:");
while((i = masukan1.read())
!= -1) {
System.out.print((char)i);
}
System.out.println();
System.out.println("masukan2 adalah:");
while((i = masukan2.read())
!= -1) {
System.out.print((char)i);
}
System.out.println();
}
}
Keluaran Program
masukan1 adalah:
abcdefghijklmnopqrstuvwxyz
masukan2 is:
abcde
11. Tulislah sebuah program yang mendemonstrasikan
penggunaan CharArrayWriter.
Penyelesaian
// Demonstrasi CharArrayWriter.
import java.io.*;
public class
DemoCharArrayWriter {
public static void main(String args[]) throws IOException {
CharArrayWriter f = new CharArrayWriter();
String s = "Ini akan
ditempatkan di dalam array";
char buf[] = new char[s.length()];
s.getChars(0, s.length(),
buf, 0);
f.write(buf);
System.out.println("Buffer sebagai sebuah string");
System.out.println(f.toString());
System.out.println("Ke dalam array");
char c[] = f.toCharArray();
for (int i=0;
i<c.length; i++) {
System.out.print(c[i]);
}
System.out.println("\nKe sebuah FileWriter()");
FileWriter f2 = new FileWriter("test.txt");
f.writeTo(f2);
f2.close();
System.out.println("Melakukan reset");
f.reset();
for (int i=0; i<3;
i++)
f.write('X');
System.out.println(f.toString());
}
}
Keluaran Program
Ini akan ditempatkan di dalam
array
Ke dalam array
Ini akan ditempatkan di dalam
array
Ke sebuah FileWriter()
Melakukan reset
XXX
No comments:
Post a Comment