Saturday, May 22, 2010

Learning Basic Parsing 1

Buat dekomentasi apa-apa yang ku kerjakan..mudah-mudahan bisa membantu yang lain juga dengan membahas masalah yang sama.datanya kita save disalah satu direktori.oya ku menggunakan ubuntu 10.04 /home/dendy/ifconfig.txt
berikut codingannya :

package com.andia.aryandie.latihan.parser;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;

/**
 * Interface, HWAddress, IPAddress
 *
 * @author dendy
 *
 */
public class IFConfigParser {

    public static void main(String[] args) {
        String filename = "/home/dendy/ifconfig.txt";
        File file = new File(filename);
//        System.out.println(filename);
        try {
            FileReader fileReader = new FileReader(file);
            BufferedReader reader = new BufferedReader(fileReader);
            String line = "";
           

            // Satu record output berasal dari beberapa line input
            // Kumpulan line dalam satu record disimpan di isirecord
            //apa fungsi dari string
            LinkedList isiRecord = new LinkedList();
           
            try {
                int counter = 0;

                // Baca semua line yang ada
                while ((line = reader.readLine()) != null) {

                    // Tambahkan satu line ke buffer line isiRecord
                    isiRecord.addLast(line);
                    // System.out.println(line);

                    // Pembatas satu record
                    if (line.length() == 0) {

                        // Baca data dari satu record
                        // Lopping kesemua baris dalam satu record buffer
                        // Untuk di ambil data yang diinginkan untuk satu record
                        // Nantinya akan keluar saru baris
                        for (String text : isiRecord) {
                            if (text.contains("Link encap")) {
                                String[] fields = text.split(" +");
                                if (fields.length == 5) {
                                    System.out.print(fields[0] + ";"
                                            + fields[4]);
                                } else {
                                    System.out.print(fields[0] + ";");
                                }
                            } else if (text.contains("inet addr")) {
                                String[] fields = text.split(" +");
                                if (fields.length >= 3) {
                                    System.out.print(";"
                                            + fields[2].substring(5));
                                } else {
                                    System.out.print("");
                                }
                            }

                        }
                        System.out.println();

                        // Setiap selesai proses satu record buffer di clear
                        isiRecord.clear();
                        counter++;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

}

output yang di inginkan :

eth0;00:23:5a:55:9b:1e
eth1;00:24:2b:90:b9:da;192.168.0.199
lo;;127.0.0.1

No comments: