PERTEMUAN IV FILE
TUJUAN PRAKTIKUM
- Praktikan memahami penanganan string. - Praktikan dapat membuat program sederhana untuk penanganan string - Praktikan mengetahui bagaimana membuat objek file. - Praktikan memahami bagaimana menuliskan string ke file dan penggunaan yang lain.
4.1 Penanganan String Dalam pemrograman Java, String merupakan aspek penting dan kita akan selalu menemui bentuk string untuk membuat program.String merupakan class yang terdapat dalam library Java. 4.1.1 String Literal Sebelumnya kita sudah sering menggunakan System.out.println yang menampilkan String dilayar, dimana String yang ditampilkan diawali dengan tanda “ dan diakhiri dengan tanda “. Apabila kita menampilkan variable bukan String dengan System.out.println maka isi variable diubah menjadi String terlebih dahulu secara implicit dengan method toString() yang dimiliki oleh setiap class Java. Untuk mendeklarasikan variable dengan nilai String maka kita perlu menggunakan tanda “ (petik ganda) dan kita dapat menggunakan karakter khusus seperti \n maupun Unicode dalam String. 4.1.2 Membuat Objek String Java mendefinisikan class String dalam package java.lang.String sehingga kita tidak perlu melakukan import secara eksplisit apabila program kita menggunakan package String ini. Contoh : String varString = ”abcd”; Sebenarnya kode tersebut adalah bentuk singkat dari: Char[] datanya={’a’,’b’,’c’,’d’} String varString=new String(datanya); Jadi dapat disimpulkan bahwa String terdiri dari data array bertipe char. Kita juga dapat membuat objek String menggunakan keyword new yang biasa digunakan untuk membuat objek dari class. Contoh: String dataString= new String(”abcde”); Untuk lebih lengkapnya mengenai pembuatan objek String, kita dapat mencarinya di dokumentasi Java pada package java.lang. Objek String bersifat immutable yang berarti objek String tidak dapat diubah. Apabila kita mendeklarasikan variabel String seperti berikut: String varString=”Ini variabel String”; Maka apabila kita mengubah nilainya seperti berikut: varString=”Sebenarnya ini juga String”; maka java akan membuat referensi objek yang menunjuk lokasi baru pada memori dan bukannya mengganti isi memori sebelumnya dengan nilai yang baru. Lab. Teknik Informatika - FTI Universitas Gunadarma
51
4.1.3 Menggabungkan String Seringkali dalam pemrograman kita perlu menggabungkan String untuk mendapatkan String baru. Dengan menggunakan operator (+) dapat digunakan untuk menggabungkan beberapa String. Contoh penggunaan: Stringku=”Ini adalah contoh”+”penggabungan String”; Kita juga dapat menggunakan operator += untuk menggabungkan variabel String, misalnya: String kata=”Ini perkataan”; Kata +=”saya sendiri”; Contoh program1: //nama file : StringGabung.java public class StringGabung{ public static void main (String[]args){ String StringPertama="Penonton "; String StringKedua=" menghadiri "; String StringKetiga="Pertunjukan"; String StringGabung; StringGabung=StringPertama+StringKedua+StringKetiga; System.out.println(StringGabung); int anggota=80; StringGabung=anggota+" orang "+StringKedua+StringKetiga; System.out.println(StringGabung); StringGabung="Empat puluh empat adalah "+4+4; System.out.println(StringGabung); StringGabung=10+10+" adalah duapuluh"; System.out.println(StringGabung); } } Output program1: Penonton menghadiri Pertunjukan 80 orang menghadiri Pertunjukan Empat puluh empat adalah 44 20 adalah duapuluh 4.1.4 Menbandingkan String Untuk membandingkan objek String, kita dapat menggunakan operator (==) atau method equals(). Penggunaan dan perbedaan dari kedua cara tersebut dapat dilihat pada contoh pemrograman TesKesamaanString. Selain equals()juga terdapat method equalsIgnoreCase() yang mengabaikan antara huruf besar dengan huruf kecil. Penggunaan tanda == untuk mencek kesamaan antara String, tidak dapat digunakan karena tanda == mencek lokasi dari String di memori apakah sama dengan String yang dibandingkan. Apabila lokasinya sama maka nilai yang didapat akan selalu sama. Hanya saja walau String seringkali memiliki data sama tetapi dengan lokasi memori berbeda. Lab. Teknik Informatika - FTI Universitas Gunadarma
52
Contoh program2: public class TesKesamaanString { public static void main(String[]args){ String nama="Dini Triasanti"; String namanya=nama; System.out.println("nama : "+nama); System.out.println("namanya : "+namanya); /*hal ini mengakibatkan namanya menunjuk pada lokasi memori yang sama dengan nama */ System.out.println("nama.equals(namanya)?"+(nama.equals(namanya)?"sama":"tidak sama")); System.out.println("nama==namanya? "+(nama==namanya?"sama":"tidak sama")); System.out.println("================================"); String namaku="Dini Triasanti"; System.out.println("namaku : "+namaku); System.out.println("namaku.equals(nama)?"+(namaku.equals(nama)?"sama":"tidak sama")); System.out.println("namaku==nama? "+(namaku==nama?"sama":"tidak sama")); System.out.println("================================"); nama+=" ST"; String namamu="Dini Triasanti ST"; System.out.println("nama : "+nama); System.out.println("namamu : "+nama); System.out.println("namamu.equals(nama)?"+(namamu.equals(nama)?"sama":"tidak sama")); System.out.println("namamu==nama? "+(namamu==nama?"sama":"tidak sama")); }} Output program2: nama : Dini Triasanti namanya : Dini Triasanti nama.equals(namanya)?sama nama==namanya? sama ================================ namaku : Dini Triasanti namaku.equals(nama)?sama namaku==nama? sama ================================ nama : Dini Triasanti ST namamu : Dini Triasanti ST namamu.equals(nama)?sama namamu==nama? tidak sama 4.1.5 Mengurutkan String Kita dapat melakukan pengurutan String dengan method compareTo(). Method ini membandingkan karakter-karakter pada String secara berurutan dari awalString. Contoh program3: Misalnya String pertama bernilai ”a” dan String kedua bernilai ”b” maka apabila Lab. Teknik Informatika - FTI Universitas Gunadarma
53
Stringpertama.compareTo(Stringkedua) akan menghasilkan nilai negatif(<0) dan apabila dilakukan sebaliknya akan dihasilkan apabila String pertama dengan kedua sama. public class UrutString { public static void main(String[]args){ String[] nama1={"Dini","Dwi","Eko","Septian","Santi", "Hannan","Ana","Auditya","Indra","Mita"}; String temp; System.out.println("Nama-nama sebelum diurutkan"); for(int i=0;i
0) { temp=nama1[j+1]; nama1[j+1]=nama1[j]; nama1[j]=temp; } } } for(int i=0;i
54
3 Dini 4 Dwi 5 Eko 6 Hannan 7 Indra 8 Mita 9 Santi 10 Septian 4.1.6 Mencek Awal dan Akhir String Untuk mencek awal dan akhir String, kita dapat menggunakan method startsWith() dan endsWith() yang mengembalikan true apabila benar dan false apabila salah. Contoh program4: //nama file: CekAwalAkhir.java public class CekAwalAkhir{ public static void main (String []args){ String awal="Awal dari String"; System.out.println("String awal berisi : "+awal); System.out.println("CEK AWAL STRING"); System.out.println("Apakah awal diawali dengan \"Awal\"?"+awal.startsWith("Awal")); System.out.println("Apakah awal diawali dengan \"awal\"?"+awal.startsWith("awal")); System.out.println("Apakah awal diawali dengan \"saya\"?"+awal.startsWith("saya")); System.out.println("CEK AKHIR STRING"); System.out.println("Apakah akhir diawali dengan \"String\"?"+awal.endsWith("String")); System.out.println("Apakah awal diawali dengan \"string\"?"+awal.startsWith("string")); } } Output program4: String awal berisi : Awal dari String CEK AWAL STRING Apakah awal diawali dengan "Awal"?true Apakah awal diawali dengan "awal"?false Apakah awal diawali dengan "saya"?false CEK AKHIR STRING Apakah akhir diawali dengan "String"?true Apakah awal diawali dengan "string"?false 4.1.7 Mendapatkan panjang String Untuk mendapatkan panjang String, kita dapat menggunakan method length(). Contoh penggunaannya adalah sebagai berikut: String panjang=”ini panjangnya 17”; System.out.println(panjang.length());
Lab. Teknik Informatika - FTI Universitas Gunadarma
55
4.1.8 Mendapatkan Karakter dari String Dalam pemrograman suatu saat mungkin kita perlu mendapatkan karakter dari objek String. Untuk mendapatkannya kita menggunakan bilangan integer yang menyatakan posisi karakter pada String, dimana karakter pertama String merupakan posisi ke 0. Method yang digunakan untuk mendapatkan karakter dari String adalah : charAt(int bilinteger) Contoh program5: //nama file: DapatKarakter.java public class DapatKarakter{ public static void main (String []args){ String iniString="Ini adalah String"; System.out.println("Menampilkan semua karakter dari String"); System.out.print("\nKarakter : "); for (int i=0 ; i < iniString.length();i++) {System.out.print(iniString.charAt(i)+" ");} } } Output program5: Menampilkan semua karakter dari String Karakter : I n i a d a l a h S t r i n g 4.1.9 Mencari Posisi Karakter Atau SubString dari String Ada dua method yang dapat digunakan untuk mencari posisi karakter dari String dan dua method untuk mendapatkan posisi SubString dari String. Method untuk mencari posisi karakter pada String: • indexOf(char karakter): memerlukan argumen berupa karakter dan akan mengembalikan nilai posisi indeks dari karakter yang dicari. Posisi yang dikembalikan hanyalah posisi pertama dari karakter yang ditemukan. Bila karakter tidak ditemukan maka akan mengembalikan nilai -1. • indexOf(char karakter, int indeks): sama dengan sebelumnya, tetapi memerlukan argumen tambahan yaitu indeks posisi awal pencarian dalam integer. Method untuk mencari posisi SubString pada String: • indexOf(String str): penggunaan dan fungsi sama dengan method untuk char • indexOf(String str, int indeks): penggunaan dan fungsi sama dengan method untuk char Contoh program6: //nama file: IndeksString.java public class IndeksString{ public static void main (String []args){ String kalimat="Kalimat dapat Anda ganti sesukanyaa"; int[] indeks=new int[kalimat.length()]; System.out.println("String yang digunakan : "+kalimat); System.out.println("Karakter a ditemukan pada indeks :"); for (int i=0 ; i < kalimat.length();i++) { indeks[i]=kalimat.indexOf('a',i); } Lab. Teknik Informatika - FTI Universitas Gunadarma
56
int jumlah=0; int k=0; int j; while(k<(kalimat.length()-1)) {if (indeks[k]==-1) break; j=k+1; if(indeks[j]!=indeks[k]){ jumlah++; if (jumlah==1) System.out.println(indeks[k]); System.out.println(indeks[j]); k=j; } else {k++;} } System.out.println("panjang String= "+kalimat.length()); System.out.println("Jumlah karakter yang ditemukan = "+jumlah+1); } } Pembahasan program6: Program diatas menyimpan indeks posisi yang ditemukan dari method dibawah ini: Indeks[i]=kalimat.indexOf(’a’,i); Dimana nilai i terus bertambah karena menggunakan perulangan for sehingga setiap posisi karakter a dapat ditemukan dan disimpan dalam array indeks. Karena pada array indeks[i] terdapat nilai posisi yang sama maka untuk menampilkan posisi, kita perlu melakukan pengecekan apakah nilai berikutnya memiliki nilai yang sama, apabila tidak maka nilai posisi ditampilkan pada browser. Method indexOf akan mengembalikan nilai -1 apabila tidak menemukan posisi karakter yang dicari sehingga apabila nilai pada array indeks ditemukan nilai –a maka akan dilakukan break pada perulangan while. Output program6: String yang digunakan : Kalimat dapat Anda ganti sesukanyaa Karakter a ditemukan pada indeks : 1 5 9 11 17 20 30 33 34 panjang String= 35 Jumlah karakter yang ditemukan = 81
Lab. Teknik Informatika - FTI Universitas Gunadarma
57
4.1.10 Memodifikasi String Ada dua cara untuk memodifikasi String, yaitu method replace dan trim. Method replace digunakan untuk membuat objek String baru yang melakukan penggantian atau pengubahan pada karakter tertentu dari String. Method trim digunakan untuk menghilangkan spasi / whitespace pada awal dan akhir dari String dan menyimpannya dalam objek String baru. Contoh program7: //nama file StringRepTrim.java public class StringRepTrim{ public static void main(String []args) { String Stringawal="Ini-String-awal"; System.out.println("Objek String Stringawal adalah : "+Stringawal); //Melakukan replace String Stringbaru=Stringawal.replace('-',' '); System.out.println("Objek Stringbaru yang baru yang berasal dari"); System.out.println("Stringawal setelah (-) diganti spasi adalah : "+Stringbaru); System.out.println("Kali ini program untuk mwnghilangkan spasi di awal dan akhir String"); String adaspasi="
banyak spasi
";
System.out.println("Variabel adaspasi yaitu : "+adaspasi); String tanpaspasi=adaspasi.trim(); System.out.println("Kemudian setelah dilakukan trim() menjadi :"+tanpaspasi); } } Output program7: Objek String Stringawal adalah : Ini-String-awal Objek Stringbaru yang baru yang berasal dari Stringawal setelah (-) diganti spasi adalah : Ini String awal Kali ini program untuk mwnghilangkan spasi di awal dan akhir String Variabel adaspasi yaitu : banyak spasi Kemudian setelah dilakukan trim() menjadi :banyak spasi 4.1.11 Membuat Array Karakter dari String Anda dapat membuat array bertipe char dari variabel String dengan menggunakan method toCharArray() dari class String. Karena method ini mengembalikan array bertipe char maka kita perlu mendeklarasikan variabel bertipe array char untuk menyimpan hasil char array dari String. Selain method toCharArray() juga ad method getChars(). Untuk menggunakan method getChars diperlukan empat argument, yaitu: • awal posisi pada String dalam integer. • Akhir posisi pada String dalam integer. • Nama variabel array char yang digunakan untuk menyimpan. • Posisi indeks pertama untuk menyimpan karakter pertama dalam integer.
Lab. Teknik Informatika - FTI Universitas Gunadarma
58
Contoh program8: //nama file: StringtoChar.java public class StringtoChar{ public static void main(String []args) { String teks="Apa saja deh"; char[] arrayteks=teks.toCharArray(); System.out.println("String teks bernilai "+teks); System.out.println("Lalu diubah menjadi char seperti berikut :"); for(int i=0;i<arrayteks.length;i++){ System.out.println(arrayteks[i]); } System.out.println("Program ini mendapatkan array char dari String dengan method getChars() "); char[] getkarakter=new char[4]; teks.getChars(4,8,getkarakter,0); System.out.println("Tampilkan array char yang diperoleh dari getChars() :"); for(int i=0;i
59
4.1.13 StringBuffer Setelah membahas penggunaan String, mari mempelajari Stringbuffer yang sangat erat hubungannya dengan String dimana kita akan memerlukannya apabila kita banyak berurusan dengan String. Kita dapat mendeklarasikan StringBuffer seperti berikut: StringBuffer sb=new StringBuffer(”Ini adalah StringBuffer”); Atau StringBuffer sb=new StringBuffer(); Atau StringBuffer sb=new StringBuffer(50); Perhatikan angka 50 pada contoh kode tersebut. Angka ini digunakan untuk menentukan kapasitas StringBuffer. Kapasitas StringBuffer dapat membesar secara otomatis apabila diperlukan, sehingga angka 50 tersebut hanya untuk memastikan alokasi memori yang tersedia pada saat itu saja. StringBuffer bersifat mutable yang berarti berlawanan dengan sifat String. Kita akan lebih leluasa menggunakan StringBuffer apabila kita lebih sering melakukan modifikasi pada String. Selain itu StringBuffer juga memiliki performa dan kecepatan yang jauh lebih baik apabila kita melakukan modifikasi String, terutama untuk penggabungan String(concatenation). Lebih baik kita menggunakan StringBuffer apabila kita melakukan banyak penggabungan String. Oleh karena penggunaan StringBuffer yang sering dan umum adalah untuk penggabungan String, disini akan dibahas dua method utama dari StringBuffer, yaitu append() dan toString(). Contoh program9: //nama file: StringBuffer1.java public class StringBuffer1{ public static void main(String []args) { StringBuffer sb=new StringBuffer(); String kata ="berkata"; sb.append("Saya ").append(kata).append("-kata"); System.out.println(sb.toString()); System.out.println(sb); } } Output program9: Saya berkata-kata Saya berkata-kata Hasil dari output yang tampak pada konsol, kita dapat melihat bawa saat kita menampilkan sb yang merupakan variable StringBuffer dengan sb.toString(), kita akan mendapatkan hasil yang sama karena secara implicit pada saat ditampilkan oleh System.out.println, variable sb akan memanggil method to.String(). Semua class dalam library java memiliki method toString() karena mewarisi method ini dari java.lang.Object sebagai root dari semua class. 4.2 Class File Class File merupakan langkah awal dalam mempelajari proses input output dengan Java karena File merupakan objek yang mewakili path, file atau direktori pada harddisk. Lab. Teknik Informatika - FTI Universitas Gunadarma
60
Ada 3 cara membuat objek File, yaitu : 1. Menggunakan objek String sebagai argument yang menginformasikan path untuk file atau direktori. Contoh : File direktori = new File(“c:\\my documents\\java\\”); File fileku = new File(“c:\\my documents\\java\\dokumen.txt”); 2. Menggunakan dua langkah dimana yang pertama untuk mendefinisikan direktori dan yang kedua untuk file. Contoh : File dirku = new File(“c:\\my documents\\java”); File filenya = new File(dirku, “dokumennya.txt”); 3. Menggunakan dua argument dimana yang pertama adalah argument String yang mendefinisikan direktori, dan yang kedua adalah argument String yang mendefinisikan nama file Contoh : File filesaya = new File(“c:\\my documents\\java\\”,”dokumennya.txt”); Catatan : jika kurang terbiasa menggunakan backslash (\\), bisa menggunakan slash(/), karena Java masih mentolerir penggunaan slash sebagai karakter pemisah path di Windows.
Method dalam Class File Selain mendefinisikan direktori atau file, objek File juga dapat digunakan untuk mendapatkan informasi file melalui method-method yang ada dalam objek File. Penggunaan class File dan method-methodnya dapat dilihat pada program cekDirektori.java Method exists() isDirectory()
Keterangan Mengembalikan nilai true apabila file atau direktori itu ada Mengecek apakah objek file menunjuk pada direktori atau file Mendapatkan nama file atau direktori dalam string(tanpa path) dari objek getName() File Mendapatkan path dalam String dari objek File,termasuk nama File / getPath() direktori Mendapatkan path absolute dari direktori / file yang direferensi oleh objek getAbsolutePath() file list()
listFiles() length() lastModified()
Bila objek File mewakili direktori maka akan mengembalikan array String yang mengandung nama dari isi direktori. Bila objek File merupakan file maka akan mengembalikan nilai null Bila objek file berupa direktori maka akan mengembalikan objek File yang ada dalam direktori Mengembalikan nilai bertipe long yang merupakan panjang bytes dari file yang diwakili oleh objek File, bila berupa direktori akan mengembalikan nilai 0 Mengembalikan nilai long yang mewakili waktu terakhir objek File terakhir kali dimodifikasi.
Lab. Teknik Informatika - FTI Universitas Gunadarma
61
//Nama File cekDirektori.java import java.io.*; import java.util.Date; public class cekDirektori{ public static void main(String args[]) { System.out.println("TESTING DIREKTORI DAN ISI DIREKTORI"); String dirnya="D:\\progjava\\"; File direktori = new File (dirnya); System.out.println(direktori+(direktori.isDirectory()?" adalah ": " bukan") + " direktori"); System.out.println("NAMA DIREKTORI: "+direktori.getName()); System.out.println("PATH DIREKTORI: "+direktori.getPath()); File[] isidirektori = direktori.listFiles(); if (isidirektori!=null) { System.out.println("Jumlah isi direktori adalah "+isidirektori.length); System.out.println("ITEM dalam direktori:"); for (int i=0 ; i
Menuliskan String ke File Teks Seperti telah disinggung diatas, bahwa terdapat dua macam stream, yaitu binary dan karakter stream dan yang akan digunakan untuk menulis karakter ke file teks adalah karakter stream. Perbedaan utama apabila kita menggunakan karakter stream dan binary stream adalah tidak adanya konversi dari data output yang akan kita tuliskan menjadi karakter sesuai coding karakter yang digunakan oleh komputer kita.
Lab. Teknik Informatika - FTI Universitas Gunadarma
62
FileWriter FileWriter merupakan subclass dari OutputStreamWriter dimana class OutputStreamWriter adalah subclass dari class abstrak Writer. Class Writer memiliki Konstruktor yang umum seperti berikut : • FileWriter(File objekfile); • FilWriter(String pathkefile); • FileWriter(String pathkefile, Boolean append); Contoh penggunaan : File inifile = (pathdirektori, namafile); FileWriter outputnya = new FileWriter(inifile); PrintWriter PrintWriter merupakan subclass dari class abstrak Writer yang digunakan melakukan output dari berbagai macam tipe data yang kemudian dikonversi ke bentuk karakter. Penggunaan PrintWriter dengan FileWriter : PrintWriter fileoutput = new PrintWriter ( New FileWriter(File objekfile); ); Contoh penggunaan lebih lengkap dapat dilihat pada listing dibawah : //Nama File : TulisFile.java import java.io.*; public class TulisFile{ public static void main(String args[]) { boolean kondisi=false; try { String direktori="C:\\ C:\My Documents\\JAVA"; String namafile="fileteks.txt"; File fileteks = new File(direktori,namafile); if (fileteks.exists()) { kondisi=true; } else { fileteks.createNewFile(); } PrintWriter fileoutput = new PrintWriter ( new FileWriter (fileteks.getPath(),kondisi)); String[] identitas={"Santi\n","Web Developer\n", "PT Informatika Tech\n"}; Lab. Teknik Informatika - FTI Universitas Gunadarma
63
for (int i=0 ; i
Membaca File Teks Kali ini kita akan mempelajari bagaimana membaca karakter dari file teks. Adapun class dasar yang dipakai adalah class Reader yang memiliki beberapa subclass yang dapat dipakai untuk membaca karakter. Yang akan diberikan contoh adalah penggunaan class FileReader. FileReader Class yang dapat dipakai untuk membaca file teks adalah FileReader. Konstruktor FileReader adalah : - FileReader(File objekfile); - FileReader(String pathkefile); Method yang digunakan : - read(char[] array); - read(char[] array, int offset, int length); Sebenarnya class ini memiliki method lain, tetapi kali ini kita akan membahas penggunaan method read(char[] array) saja. Lebih jelas lihat listing dibawah. // Nama File : BacaFile.java import java.io.*; public class BacaFile{ public static void main(String args[]) { System.out.println("Membaca file teks"); try { String direktori="C:\\My Documents\\JAVA"; String namafile="fileteks.txt"; File fileteks = new File(direktori,namafile); BufferedReader baca =new BufferedReader (new FileReader(fileteks)); int c; StringBuffer temp=new StringBuffer(); String tempstring=""; Lab. Teknik Informatika - FTI Universitas Gunadarma
64
While (true) { tempstring = baca.readLine(); if (tempstring !=null) temp.append(tempstring+"\n"); else break; } System.out.print(temp); } catch (IOException e) { System.out.println("ERROR membaca file"+e); } } }
STEP BY STEP 1. Tuliskan bentuk umum sintaks atau method untuk penanganan String berikut: a. Membuat objek String b. Menggabungkan String c. Membandingkan dan mengurutkan String d. Mendapatkan panjang String e. Mendapatkan karakter dari String 3. Bagaimana cara membuat objek file! 4. Sebutkan class-class yang terdapat di file disertai dengan bentuk umumnya 5. Sebutkan macam-macam operasi file serta apa perbedaan dari operasi file tersebut. MATERI PRAKTIKUM 1. Memberikan penjelasan tentang penanganan String dan contoh programnya. 2. Memberikan penjelasan disertai contoh tentang operasi file di Java.
LAPORAN AKHIR 1. Cetak program – program yang dikerjakan pada saat praktikum. 2. Buat logika program untuk masing – masing program. Lab. Teknik Informatika - FTI Universitas Gunadarma
65