Tuesday, June 5, 2007

inPuT aND ouTPuT

Untuk mengoperasikan sebuah file, kita harus membuat object File dari java.io
Example : File inFile = new File ("sample.dat");
berfungsi untuk membuka file sample.dat

File inFile = new File("C:/SamplePrograms/test.dat");
berfungsi untuk membuka file test.dat di directory C:\SamplePrograms

Beberapa method dari File :
- if ( inFile.exists () ) { ----> untuk melihat jika inFile yang dimaksud benar atau tidak
- if ( inFile.isFile () ) { -----> untuk melihat jika inFile yang dimaksud merupakan file atau bukan, jika bukan, berarti itu adalah directory.

File directory = new File ("C:/JavaPrograms/Ch12");
String filename[] = directory.list();
for (int i = 0; i <>
System.out.println(filename[i]);
}
Ini untuk mengeluarkan semua nama file yang ada di directory C:\JavaPrograms\Ch12

Object javax.swing.JFileChooser berguna untuk memilih sebuah file yang diinginkan oleh user.
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);

Beberapa info dari JFileChooser :
- File selectedFile = chooser.getSelectedFile();
- File currentDirectory = chooser.getCurrentDirectory();

File filter kemungkinan terbatas digunakan dalam JFileChooser hanya untuk file atau directory yang membutuhkan filtering. Di dalam Java, kita bisa menggunakan class javax.swing.filechooser.FileFilter yang juga menyediakan beberapa method, seperti :
- public boolean accept(File file);
- public String getDescription();

Untuk membaca atau menulis data dari sebuah file, kita harus membuat salah satu object stream yang kita lampirkan ke dalam file.
Stream adalah rangkaian dari data items yang biasanya terdiri dari 8 bit.
Java memiliki 2 tipe stream : input stream ( berisi source dari data yang akan ditampilkan ) dan output stream ( berisi tujuan dari data itu ).

FileOutputStream ( membantu kita untuk mengeluarkan rangkaian bytes ) dan FileInputStream ( membantu kita untuk membaca dalam array of bytes ) adalah 2 object stream yang berguna untuk mengakses sebuah file.
File outFile = new File ("sample1.data");
FileOutputStream outStream = new FileOutputStream ( outFile );

File inFile = new File ("sample1.data");
FileInputStream inStream = new FileInputStream ( inFile );

FileOutputStream dan DataOutputStream digunakan untuk mengeluarkan primitive data values. Sedangkan FileInputStream dan DataInputStream digunakan untuk memasukkan primitive data values.

File outFile = new File ("sample1.data");
FileOutputStream outFileStream = new FileOutputStream ( outFile );
DataOutputStream outDataStream = new DataOutputStream ( outFileStream );

outDataStream berguna untuk menuliskan primitive data
outFileStream berguna untuk mengubah primitive data menjadi rangkaian bytes
outFile berguna untuk menuliskan bytenya

Setelah kita menuliskan dan mengatur outDataStream, kita bisa menuliskan nilai primitive data ke dalam stream di main nya.
outDataStream.writeInt(987654321);
outDataStream.writeLong(111111111);
outDataStream.close();

Object dari DataInputStream adalah :
File inFile = new File ("sample1.data");
FileInputStream inFileStream = new FileInputStream ( inFile );
DataInputStream inDataStream = new DataInputStream ( inFileStream );

inFile berguna untuk membaca bytes
inFileStream berguna untuk mengubah rangkaian bytes menjadi primitive data
inDataStream berguna untuk membaca primitive data

Setelah kita mengatur DataInputStream nya, kita membuat data yang sudah dimasukkan dapat diperlihatkan
System.out.println(inDataStream.readInt());
System.out.println(inDataStream.readLong());
inDataStream.close();

Dan yang perlu diingat adalah primitive data yang dioperasikan dalam output dan input harus sama dan benar.

Kita juga bisa menyimpan primitive data sebagai data biner dalam sebuah file, kita dapat mengubah dan menyimpannya sebagai string yang memungkinkan kita untuk melihat isi file dengan banyak text file editor.

Untuk mengeluarkan data sebagai string suatu file, kita menggunakan object PrintWriter.
File outFile = new File ("sample3.data");
FileOutputStream outFileStream = new FileOutputStream ( outFile );
PrintWriter outStream = new PrintWriter ( outFileStream );

Sedangkan untuk memasukkan data dari sebuah text file, kita menggunakan kelas FileReader dan BufferedReader. Dan kita bisa menggunakan class Scanner untuk memasukkan text file nya.
File inFile = new File ("sample3.data");
FileInputStream inFileStream = new FileInputStream ( inFile );
BufferedReader bufReader = new BufferedReader ( fileReader );

Kita dapat menggunakan ObjectOutputStream dan ObjectInputStream untuk menyimpan dan mengisi object dari sebuah file.
Dan untuk menyimpan object dari sebuah class yang diberikan, class nya harus dideclare dengan implements Serializable.
class Person implements Serializable {
......
}

Untuk menyimpan sebuah object :
File outFile = new File ("objects.data");
FileOutputStream outFileStream = new FileOutputStream ( outFile );
ObjectOutputStream outObjectStream = new ObjectOutputStream ( outFileStream );
Person person = new Person ("Mr. Espresso", 20, 'M');
outObjectStream.writeObject ( person );

Sedangkan untuk membaca object :
File inFile = new File ("objects.data");
FileInputStream inFileStream = new FileInputStream ( inFile );
ObjectInputStream inObjectStream = new ObjectInputStream ( inFileStream );
Person person = ( Person ) inObjectStream.readObject(); ----> harus ditulis cast untuk mendapatkan tipe object yang benar.

Menyimpan dan membaca sebuah object dapat dilakukan dalam array.
Person[] people = new Person[ N ];
.........
outObjectStream.writeObject ( people );
................
Person[] people = ( Person[] ) inObjectStream.readObject();

No comments: