• Tidak ada hasil yang ditemukan

2. Binary Search

4.5 Pengelolaan File

File digunakan sebagai media penyimpanan data eksternal selain memori, media penyimpanan ini bersifat non – volatile dan biasanya memiliki ukuran besar untuk dapat dibaca kembali.

Operasi yang biasa dilakukan terhadap sebuah file adalah : menulis, membaca, memeriksa keberadaan file, mengetahui status file, ukuran file dan lain sebagainya. Setiap operasi untuk mengolah file pasti memerlukan buffer untuk menampung sementara informasi dari file tersebut.

File Stream

Stream adalah kumpulan karakter yang disusun dalam baris-baris yang berpindah dari satu media ke media lain pada sistem komputer. Semua data masukan dan keluaran pasti berupa stream. Pada bahasa pemrograman C memperlakukan file sebagai stream, berikut terdapat 3 jenis stream yang otomatis dijalankan dan masing – masing berasosiasi dengan sebuah file.

- Standar input stream, yang mengatur aliran masukan data melalui keyboard.

- Standard output stream, yang mengatur aliran data keluaran ke layar monitor

- Standard error stream, yang mengatur tampilan kesalahan ke layer monitor

Jenis File

File dibedakan menjadi 2 bagian berdasarka jenisnya, antara lain : 1. File Teks

File teks adalah file yang berisi data – data ASCII sehingga dapat ditampilkan dilayar apa adanya. Satu karakter ASCII dalam teks berukuran 2 bytes.

2. File Biner

File biner adalah file yang berisi data – data biner dan berupa byte stream sehingga tidak dapat ditampilkan apa adanya di layar. Satu karakter akan berukuran 1 byte, sedangkan nilai yang bukan karakter akan disimpan sesuai dengan ukuran microprocessor. Ukuran tergantung pada ketentuan microprocessor dan bukan tergantung pada jumlah digit bilangan.

Operasi dasar yang biasa dilakukan dalam manajemen file ada 3 bentuk, antara lain :

4.5.1 Membuka File

Membuka file merupakan operasi yang paling dasar dalam manajemen file, karena sebuah file harus dalam kondisi terbuka terlebih dahulu agar dapat diakses.

Notasi yang digunakan adalah :

FILE * fopen(const char *filename, const char *mode)

Apabila proses pembukaan file gagal, maka pointer akan mengembalikan nilai null. Parameter yang harus diperhatikan saat membuka file adalah : Modus r  Membuka untuk dibaca.

Modus w  Membuka untuk menulis ( File tidak harus eksis dahulu) Modus a  Membuka untuk menambahkan data.

Modus r+  Membuka untuk membaca dan menulis.

Modus w+  Membuka untuk membaca dan menulis (akan menimpa file) Modus a+  Membuka untuk membaca dan menulis (menambahjan apabila file sudah ada sebelumnya)

File dapat dibuka sebagai file teks ataupun biner, aturan yang harus diperhatikan adalah :

 File teks menggunakan parameter tambahan menjadi rt. Wt, at, r+t, w+t dan a+t.

 File biner menggunakan parameter tambahan menjadi rb. Wb, ab, r+b, w+b dan a+b.

Notasi algoritmik yang digunakan pada setiap bahasa pemrograman berbeda – beda, dalam pembahasan ini kita akan menggunakan bahasa pemrograman Tubro C untuk membahas manajemen file lebih lanjut.

Contoh : FILE *fp;

fp=fopen("c:\\test.txt", "r");

if (fp==NULL) printf(“Error, file tidak dapat dibuka!”);

Program diatas akan membuka file bernama test.txt dengan modus operasi pembacaan, dan apabila file tidak ditemukan maka akan memberikan nilai kembalian NULL.

4.5.2 Memanipulasi File

Berikut adalah beberapa cara / fungsi yang digunakan untuk melakukan manipulasi file (baca atau tulis). Sekali lagi ditekankan bahwa pada setiap bahasa pemrograman memiliki ketentuang yang berbeda – beda.

Untuk menulis ke file dalam format tertentu: int fprintf(fp, "Testing...\n");

jika berhasil akan dikembalikan jumlah byte yang dituliskan sedangkan jika gagal dikembalikan EOF

Untuk membaca dari file dalam format field tertentu: int fscanf(fp, "Testing...\n");

jika berhasil akan dikembalikan jumlah field yang dibaca sedangkan jika gagal dikembalikan EOF

Untuk menulis karakter ke file teks: int fputc( int c, FILE *fp );

jika berhasil akan dikembalikan karakter c sedangkan jika gagal dikembalikan EOF

Untuk membaca file teks perkarakter: int fgetc (FILE *fp);

jika berhasil akan dikembalikan karakter c sedangkan jika gagal dikembalikan EOF

Untuk meletakkan nilai integer ke file: int putw(int w, FILE *fp);

jika berhasil akan dikembalikan integer w sedangkan jika gagal dikembalikan EOF

Untuk membaca nilai integer: int getw(FILE *fp);

jika berhasil akan dikembalikan integer w sedangkan jika gagal dikembalikan EOF

Untuk menulis string ke file tanpa ada karakter NULL dan newline: int fputs(const char *s,FILE *fp);

jika berhasil akan dikembalikan string s sedangkan jika gagal dikembalikan EOF

Untuk membaca string dari file sebanyak n karakter atau bertemu karakter ‘\n’:

char *fgets(const char *s,int n,FILE *fp);

jika berhasil akan dikembalikan string s sedangkan jika gagal dikembalikan EOF

Untuk mengetahui akhir sebuah file stream: int feof(FILE *fp);

4.5.3 Menutup File

Operasi file tidak berakhir hanya pada bagaimana memanipulasi file yang telah dibuka, menutup hubungan dengan file yang telah dibuka sebelumnya merupakan hal yang harus diperhatikan. Pada bahasa Turbo C, notasi algoritmik yang digunakan adalah :

int fclose(FILE *a_filename); int fcloseall(void);

Pada fungsi pertama akan menutup pada file tertentu saja, sedangkan pada fungsi kedua akan menutup seluruh hubungan dengan file yang ada saat itu juga ( kecuali stdin, stdout, stdprn, stdaux ).

Apabila proses penutupan file ini berhasil maka akan mengembalikan nilai 0 dan apabila gagal maka akan mengembalikan nilai -1 (EOF).

Contoh : FILE *fp;

fp=fopen("c:\\test.txt", "r");

if (fp==NULL) printf(“Error, file tidak dapat dibuka!”); fclose(fp);

Program diatas akan membuka file bernama test.txt dengan modus operasi membaca dan kemudian langsung menutup hubungan dengan file tersebut. Contoh :

Program untuk menulis ke dalam file yang disimpan di hardisk. #include <stdio.h>

#include <stdlib.h> void main(){

if((fp=fopen("C:\\test.txt","w"))==NULL){ // bikin file test.txt di drive C. printf("error!");

exit(1); }

fputs("ABCDE\n",fp); // menulis ke dalam file test.txt

printf("alamat file : %p\n",fp->buffer); // tampilkan alamat file. printf("ukuran file : %d byte \n",fp->bsize); // ukuran file. printf("posisi file : %p\n",fp->curp); //

printf("isi file :"); for(int i=0;i<=4;i++){

printf("%c",*(fp->buffer+i)); // membaca dari buffer sampai habis. }

printf("\n") // turun 1 baris.;

printf("no pengenal file : %d\n",fp->fd); // identifier file. printf("status file :\n");

if((fp->flags & 1)==1) printf("readonly\n"); if((fp->flags & 2)==2) printf("writeonly\n"); if((fp->flags & 3)==3) printf("read/write\n"); if((fp->flags & 8)==8) printf("file line\n"); if((fp->flags & 16)==16) printf("error\n"); if((fp->flags & 32)==32) printf("akhir file\n");

if((fp->flags & 64)==64) printf("file biner\n"); else printf("file teks\n"); if((fp->flags & 128)==128) printf("data dari file\n");

if((fp->flags & 256)==256) printf("data ke file\n");

if((fp->flags & 512)==512) printf("file ada diterminal\n"); else printf("file di disk");

Dokumen terkait