Random Access File

/**
 * Title    : Demo RandomAccessFile
 * Deskripsi: Membuat aplikasi untuk membaca record transaksi penjualan barang dalam biner/heksa, menggunakan RandomAccessFile, dan menampilkannya ke console
*/

import java.io.*;

public class DemoRandomAccess {
    static String namaFileInput = "transaksi.dat";
   
    /** Main method */
    public static void main(String args[]) {
        try {
        DemoRandomAccess random = new DemoRandomAccess();
            random.bacaFileHex();
        } catch (IOException ex) {
            System.err.println(ex);
            }
        }
    /** Method untuk membaca data binary/hexadesimal */
    public void bacaFileHex() throws IOException {
        File dataFile = new File(namaFileInput);
       
        RandomAccessFile inputFile = new RandomAccessFile(dataFile, "r");
       
        long b = inputFile.length();
        long ptr = 0;
        boolean eof = false;
        int jumlahRecord = 1;
        byte[] a = new byte[(int)inputFile.length()];
       
        while (!eof) {
            ptr = inputFile.getFilePointer();
            int byteData = inputFile.read();
           
                if(byteData == -1) {
                    eof = true;
                }
               
                // Memeriksa apakah byteData merupakan karakter asterisk ("*") dan sekaligus mencetak title untuk masing-masing record
                    else if(byteData == 42) {
                     // Mencetak title record
                     System.out.println("Data record ke-" + jumlahRecord);
                     System.out.println("---------------------");
                   
                     // Mencetak kode barang
                     System.out.print("Kode barang \t :");
                     for(int k=0; k<3; k++){
                        inputFile.read(a);
                        cetakHasil(a, k);
                    } // Penutup for
                   
                    inputFile.seek(ptr+4);
                   
                    // Mencetak jumlah transaksi
                    System.out.print("\nJumlah transaksi : " + "");
                        for(int k=0; k<3; k++){
                            inputFile.read(a);
                            cetakHasil(a, k);
                        }
                       
                        inputFile.seek(ptr+6);
                        System.out.print("\n\n");
                        jumlahRecord++;
                        } //Penutup else if
                    } // Penutup while
                    inputFile.close();
                } // Penutup method void bacaFileHex
               
                /** Method untuk mencetak hasil ke layar */
                void cetakHasil(byte[] str, int indeks) {
                String hexOutput = Integer.toHexString(str[indeks]);
                    if((int)str[indeks] < 10)
                    System.out.print("0" + hexOutput);
                    else if ((int)str[indeks] == 0)
                    System.out.print("00");
                    else
                    System.out.print(hexOutput);
                } // Penutup method cetakHasil
            }

0 comments: