PERTEMUAN KE-13
Di Susun Oleh :
Fhareza Alvindo
185410105
LABORATORIUM TERPADU
2019
Pertemuan Ke-13
I/O File
A. Dasar Teori
Penyimpanan data dalam variabel dan array bersifat sementara. Data akan hilang
ketika variabel lokal keluar dari scoop atau ketika peogram berhenti. Untuk pemakaian
jangka panjang, bahkan setelah program dihentikan, komputer dapat menggunakan file.
Komputer menyimpan file ada penyimpanan skunder seperti hardisk atau flashdisk. Data
yang tersimpan adalah data presistent (data yang tetap ada walaupun rogram tidak aktif).
Untuk menciptkan sebuah file dengan mengakses kelas java.io.file dan menciptakan
objek dari class tersebut tanpa harus menanggap error io. Berbeda dengan menciptakan
file yang langsung diakses oleh stream, file terssebut harus dapat menangkap error io
karena penciptaan objek kelas file.
B. Pembahasan Praktik
Praktik 1:
Pada praktik pertama ini, user melakukan inputan kepada program mengenai lokasi
direktori/nama file pada komputer yang kemudian akan diproses oleh kelas file untuk
mengetahui informasi tentang inputan tersebut(baris7).
Pada method analyzePath terdapat pembuatan objek baru dengan nama name yang
parameternya path(baris 10). Jika objek tersebut ada maka, sistem akan mendapatkan
nama file/direktori tersebut(baris 13), dilanjutkan dengan apakah inputan file atau tidak,
kemudian apakah direktori atau tidak, masih banyak informasi yang akan ditampilkan
dibawahnya (baris13-21). Dan jika objek name tersebut adalah direktori, maka akan
diperlihatkan isi dari direktori tersebut. Dan jika yang diinputkan tidak sesuai dengan
seua kondisi diatasnya maka akan menjalankan else (baris 30).
import java.io.File;
import java.util.Scanner;
public class fileDemonstration{
public static void main(String[]args){
Scanner input =new Scanner(System.in);
System.out.print("Enter file or directory name: ");
analyzePath(input.nextLine());
}
public static void analyzePath(String path){
File name=new File(path);
if(name.exists()){
System.out.printf("%s%s\n%s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s",
name.getName(),"exists",
(name.isFile() ?"is a file" : "is not a file"),
(name.isDirectory()?"is a dorectory":"is not a directory"),
(name.isAbsolute()?"is absolute path":"is not absolute path"),
"Last modified: ",name.lastModified(),
"Length: ",name.length(),
"Path: ",name.getPath(),
"Absolute path :",name.getAbsolutePath(),
"Parent:",name.getParent());
if(name.isDirectory()){
String[] directory=name.list();
System.out.println("\n\nDirectory contents:\n");
for (String directoryName : directory)
System.out.println(directoryName);
}
}else{
System.out.printf("%s %s", path, "does not exist.");
}
}
}
a. Jalankan program, masukan nama direktori.
c. Jalankan program, masukan file atau direktori yang tidak ada dalam komputer
Praktik 2:
Praktik ini menggunakan FileOutputStream untuk membuat objek bernama fout yang
akan diakses oleh byte stream. Program melakukan try pada fout yang berisi pembuatan
FileOutputStream baru dengan parameter namaFile dan true. Kemudian data yang berisi
inputan dari user akan melakukan perulangan dengan kondisi pada baris 11. Yang
statementnya objek fout ditulis dengan isi dari inputan pada variabel data. Kemudian data
akan tersimpan pada file namaFile.txt.
Jika ditemukan/catch exception berupa FileNotFound maka akan memunculkan pesan
pada baris 17. Dan jika ditemuka /catch exception berupa IO maka akan menjalankan
pesan pada baris 19. Dan setelah proses try-catch diatas selesai, finally dijalankan yang
berisi fungsi jika objek fout!=null maka akan onjek akan dicoba ditutup. Jika ditangkap
exception IO maka akan menjalankan pesan baris 26.
import java.io.*;
public class DemoStream1{
public static void main(String[]args){
byte data;
String namaFile="text.txt";
FileOutputStream fout = null;
try{
fout=new FileOutputStream(namaFile, true);
System.out.print("Ketik: ");
data=(byte)System.in.read();
while(data!=(byte)'\r'){
fout.write(data);
data=(byte)System.in.read();
}
}
catch(FileNotFoundException e){
System.out.println("File "+namaFile+" tidak dapat di create");
}catch(IOException e){
System.out.println("Terjadi Exception");
}
finally{
if(fout!=null){
try{
fout.close();
}catch(IOException e){
System.out.println("Terjadi Exception");
}
}
}
}
}
Praktik 3:
Praktik ini sama dengan praktik sebelumnya, tapi jika praktik sebelumnya menuliskan
isi dari file tersebut. Pada praktik ini, menggunakan FileInputStream untuk membaca isi
file dari text.txt tersebut. Proses tersebut terjadi didalam perulangan do didalam try
dengan isi dari data berupa byte yang akan dibaca dari variabel fin. Kemudian akan
ditampilkan melalui baris 11 dengan cara setiap char dari data tersebut.
import java.io.*;
public class DemoStream2{
public static void main(String[]args){
byte data;
String namaFile="test.txt";
FileInputStream fin = null;
try{
fin=new FileInputStream(namaFile);
do{
data=(byte)fin.read();
System.out.print((char)data);
}while(data!=-1);
}
catch(FileNotFoundException e){
System.out.println("File "+namaFile+" file tidak ditemukan");
}catch(IOException e){
System.out.println("Terjadi Exception");
}
finally{
if(fin!=null){
try{
fin.close();
}catch(IOException e){
System.out.println("Terjadi Exception");
}
}
}
}
}
Praktik 4:
Pembuatan objek baru dengan nama fs yang akan mengambil default dari objek
FileSystem. Dengan mengambil Path(baris5) dan kemudian menampilkannya pada
output.
import java.nio.file.*;
FileSystem fs = FileSystems.getDefault();
Path p = fs.getPath("Libraries/Documents/DemoFile.txt");
Praktik 5:
Praktik terakhir dimana kita akan melihat isi dari suatu file. Sama seperti praktik 3,
namun kali ini menggunakan BufferedReader dengan fileInput sebagai wadah
pembacanya, yang didalamnya ada BufferedReader dan didalamnya ada FileReader yang
didalamnya ada File dengan isi link direktori dari file yang akan dibaca isinya.
Pembacaan dilakukan dengan perulangan while dimana nilai line!= null, didalam
perulangannya terdapat objek fileInput yang akan dibaca per line/baris, kemudian jika
line !- null maka fileContent akan berisi line tersebut . Setelah perulangan selesai maka
objek fileInput akan ditutup. Isi dari fileContent akan ditampilkan pada output ketika
semua exception telah dilewati, baik itu eofe maupun ioe.
import java.io.*;
public class ReadFileOld{
public ReadFileOld(){}
public static void main(String[]args){
String line="", fileContent="";
try{
BufferedReader fileInput =
new BufferedReader(new FileReader(new File("C:/test.txt")));
line = fileInput.readLine();
fileContent = line+"\n";
while(line!=null){
line = fileInput.readLine();
if(line!=null)
fileContent+=line+"\n";}
fileInput.close();}
catch(EOFException eofe){
System.out.println("No more lines to read");
System.exit(0);}
catch(IOException ioe){
System.out.println("Error reading file");
System.exit(0);}
System.out.println(fileContent);
}
}
C. Pembahasan Latihan
Latihan ini sama dengan praktik ke 5 dimana kita akan memasukkan link dari file
yang ingin dibaca, kemudian program akan otomatis membaca isinya. Perubahan yang
dilakukan hanya menambahkan fungsi Scanner pada kode, dan mengganti pada baris 12
yang awalnya ditulis secara manual menjadi nama variabel yang menyimpan link yang
dimasukkan oleh user melalui scanner.
import java.io.*;
import java.util.Scanner;
try{
BufferedReader fileInput =
System.out.println("Isinya : ");
System.out.println();
line = fileInput.readLine();
fileContent = line+"\n";
while(line!=null){
line = fileInput.readLine();
if(line!=null)
fileContent+=line+"\n";}
fileInput.close();}
catch(EOFException eofe){
System.exit(0);}
catch(IOException ioe){
System.exit(0);}
System.out.println(fileContent);
}
D. Kesimpulan
Praktikum kali ini mempelajari bagaimana menggunakan objek elas file yang
ditujukan untuk membuat, membaca, dan menulis isi dari sebuah file baik file tersebut
ada maupun masih belum dibuat. Pembuatan objek kelas file sangat berguna kedepannya
jika ingin membuat sebuah aplikasi yang berurusan dengan user. Dimana user dapat
menginputkan filenya sendiri, dapat melihat filenya sendiri dan itu semua dapat tersimpan
pada direktori komputer user itu sendiri.
E. Listing
(Terlampir)