Idioms

- Time is precious

Monday, March 7, 2016

Read/Write CSV File With OpenCSV: Đọc/Ghi CSV Fille với OpenCSV


Nếu bạn chưa biết tải bộ thư viện này ở đâu thì có thể click vào đây!
Còn nếu bạn chưa biết làm sao để thêm bộ thư viện này vào project của mình thì có thể vào đây!

Chúng ta bắt đầu với một ví dụ đọc file csv như sau:

public class TestProgram {
public static void main(String[] args){
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
   String [] nextLine;
   while ((nextLine = reader.readNext()) != null) {
      // nextLine[] is an array of values from the line
      System.out.println(nextLine[0] + nextLine[1] + "etc...");
   }
}
}


Adding External Library To Eclipse Project: Thêm Thư Viện Ngoài Vào Project Của Bạn.


Đầu tiên bạn cần download thư viện mình cần dưới dạng .jar file rồi thực hiện theo các bước sau:

Bước 1: Phải chuột vào project chọn properties


Bước 2: Chọn Java build path => chọn thẻ libraries => chọn Add External JARs...

Tới đây bạn chọn file thư viện (.jar) mà mình muốn thêm vào là xong. Bạn có thể import thoải mái các mọi thứ trong thư viện này.

Java - Serialization: Lưu trữ đối tượng trên file


Trước đây khi mình dùng C/C++ để lưu trữ một struct ra file ta phải lưu từng trường của struct, rồi quy định cấu trúc file... rất vất vả. Nay với Java chỉ cần một vài câu lệnh đơn giản bạn có thể lưu trữ bất kì đối tượng nào mà bạn muốn.

Trước tiên là ví dụ về cách ghi đối tượng ra file:
Giả sử mình có class sau, lưu ý là cần implements java.io.Serializable:

public class Employee implements java.io.Serializable
{
   public String name;
   public String address;
   public transient int SSN;
   public int number;
   
   public void mailCheck()
   {
      System.out.println("Mailing a check to " + name + " " + address);
   }
}
Và cách ghi đối tượng ra file như sau:
import java.io.*;

public class SerializeDemo
{
   public static void main(String [] args)
   {
      Employee e = new Employee();
      e.name = "Reyan Ali";
      e.address = "Phokka Kuan, Ambehta Peer";
      e.SSN = 11122333;
      e.number = 101;
      
      try
      {
         FileOutputStream fileOut =
         new FileOutputStream("/tmp/employee.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Serialized data is saved in /tmp/employee.ser");
      }catch(IOException i)
      {
          i.printStackTrace();
      }
   }
}
Chú ý hàm writeObject(object) đây chính là hàm thực hiện nhiệm vụ ghi đối tượng ra file.

Vậy nếu ta muốn load lại đối tượng này từ file thì sao?
Trong Java gọi điều này là Deserializing an Object nghĩa nôm na của nó giống như giải mã đối tượng từ file đã ghi vậy.
Hãy cùng xem ví dụ sau để hiểu rõ hơn:
import java.io.*;
public class DeserializeDemo
{
   public static void main(String [] args)
   {
      Employee e = null;
      try
      {
         FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         e = (Employee) in.readObject();
         in.close();
         fileIn.close();
      }catch(IOException i)
      {
         i.printStackTrace();
         return;
      }catch(ClassNotFoundException c)
      {
         System.out.println("Employee class not found");
         c.printStackTrace();
         return;
      }
      System.out.println("Deserialized Employee...");
      System.out.println("Name: " + e.name);
      System.out.println("Address: " + e.address);
      System.out.println("SSN: " + e.SSN);
      System.out.println("Number: " + e.number);
    }
}
Chú ý hàm readObject() hàm này sẽ đọc lên đối tượng từ file mà mình đã ghi từ trước để trả giá trị là một Object. Cho nên bạn cần ép kiểu đối tượng mà mình mong muốn, trong ví dụ chính là kiểu Employee.

Vậy là bạn đã có thể đọc/ghi đối tượng ra file một cách dề dàng và nhanh chóng phải không? Mong bạn thích bài viết của mình :D

Source: http://www.tutorialspoint.com/java/java_serialization.htm