Monday, December 26, 2016

Bab 15. Soal & Penyelesaian Java


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 = "&copy; adalah simbol hak cipta " +
            "tetapi ini &copy 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 &copy 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