File Input dan Output
File Input dan Output
File input berarti data yang ditulis ke dalam file dan file
output berarti data yang dibaca dari sebuah file. Sebenarnya, istilah input dan
output lebih terkait dengan input dan output layar. Saat kita menampilkan
hasilnya di layar, itu disebut output. Begitu pula jika kita memberikan
beberapa masukan ke program kita dari command prompt, maka itu disebut input.
Sebelumnya kita sudah sering
melakukan input output berupa karakter di layar menggunakan
fungsi cout dan cin yang disediakan oleh pustaka iostream. Tapi bukan hanya itu, pada bahasa
pemrograman C/C++ juga menyediakan pustaka yang berfungsi untuk melakukan
tugas Input dan Output berupa sebuah file, seperti:
·
ofsteam: Merupakan
sebuah tipe data output yang
memungkinkan kita untuk melakukan pembuatan dan menulis informasi pada file.
·
ifstream: Merupakan
sebuah tipe data input yang memungkinkan kita melakukan
pembacaan informasi dari file.
·
fstream: Merupakan
sebuah tipe data input output file yang
memungkinkan kita untuk melakukan kedua hal tersebut, seperti membuat, menulis
dan membaca informasi dari file.
A. Membuka
File
Untuk dapat
melakukan input output yang diterapkan kepada file fisik,
kita membutuhkan pengait, hal itu disebut sebagai “open file” atau
membuka file. Untuk memberikan perintah membuka file dengan obyek steam, kita menggunakan function seperti di bawah ini:
1
|
open(namafile, mode);
|
Bentuk penulisan:
Keterangan:
namafile:
merupakan tempat dimana sebuah argumen untuk
menuliskan nama dari sebuah file yang akan di buka.
mode:
adalah sebuah tempat dimana kita dapat mengisikan
banyak flag sebagai argumen untuk mendefinisikan jenis mode
dalam menangani file tersebut.
Di bawah ini adalah
macam-macam flag yang dapat digunakan untuk mendefinisikan
mode pada operasi sebuah file:
ios::in
|
Untuk mendefinisikan
pembukaan file sebagai sebuah operasi pembacaan (input)
|
ios::out
|
Untuk mendefinisikan
pembukaan file sebagai sebuah operasi penulisan (output)
|
ios::binary
|
membuka file dalam
mode binari
|
ios::ate
|
Membuka sebuah file dan
memindahkan kendali input dan output pada
akhir dari file, jika tidak maka kendali akan berada pada
awal file.
|
ios::app
|
Mode penambahan,
setiap penambahan tulisan akan ditambahkan pada akhir file.
|
ios::trunc
|
Jika file sudah
ada, maka akan digantikan sepenuhnya sebelum proses membuka file.
|
Dari macam-macam flag yang
disebutkan di atas, kita dapat mengkombinasikan lebih dari satu atau bahkan
semuanya. Untuk penulisanya setiap flag akan dipisahkan dengan
tanda |.
Contoh penulisan:
1
2
|
ofstream fileku;
fileku.open("filenya.txt
", ios::out | ios::in | ios::app | ios::trunc);
|
File Operation Modes
Sebelum kita mulai bekerja dengan file apapun menggunakan program komputer,
kita perlu membuat file baru jika tidak ada atau membuka file yang sudah ada.
Dalam kedua kasus tersebut, kita bisa membuka file dalam mode berikut
§ Read-Only Mode - Jika Anda
hanya akan membaca file yang ada dan Anda tidak ingin menulis konten lebih
lanjut dalam file, maka Anda akan membuka file dalam mode read-only. Hampir
semua bahasa pemrograman menyediakan sintaks untuk membuka file dalam mode
read-only.
§ Mode Write-Only - Jika Anda
ingin menulis file yang ada atau file yang baru dibuat namun Anda tidak ingin
membaca konten tertulis dari file tersebut, maka Anda akan membuka file
tersebut dalam mode penulisan-tulis saja. Semua bahasa pemrograman menyediakan
sintaks untuk membuka file dalam mode write-only.
§ Read & Write Mode - Jika Anda akan
membaca dan juga menulis ke file yang sama, maka Anda akan membuka file dalam
mode baca & tulis.
§ Append Mode - Bila Anda membuka file
untuk menulis, ini memungkinkan Anda untuk mulai menulis dari awal file; namun
akan menimpa konten yang ada, jika ada. Misalkan kita tidak ingin menimpa
konten yang ada, maka kita buka file tersebut di append mode. Mode Append
akhirnya adalah mode tulis, yang memungkinkan konten ditambahkan pada akhir file. Hampir semua bahasa pemrograman menyediakan
sintaks untuk membuka file dalam append mode
B. Menutup
File
Untuk melakukan penulisan terhadap sebuah file yang
telah kita buka, membutuhkan sebuah operator yang dinamakan Stream
Insertion Operator
<<
mirip seperti apa yang kita lakukan saat menggunakan
obyek cout
, sebagai gantinya kita di sini menggunakan ofstream
atau fstream
.
C. Membaca
Sebuah File
Untuk membaca informasi
dari sebuah file yang telah kita buka kedalam program kita,
membutuhkan sebuah Sream Extraction Operator
>>
. Mirip seperti apa yang kita lakukan saat menggunakan obyek cin
. Sebagai gantinya kita
menggunakan ifstream
atau fstream
.
D. Contoh Operasi File (Membuka,
Menulis, Membaca dan Menutup File)
Setelah semua penjelasan di atas, saatnya
kita melakukan percobaan membuat program untuk melakukan operasi file.
Alur operasi sebuah file masih sama seperti penjeasan di atas,
dimana kita harus membuka file terlebih dahulu, melakukan
operasi seperti menulis dan membaca informasi dan jika sudah selesai kita akan
melakukan penutupan file.
Contoh
program:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <fstream>
#include <iostream>
using namespace std;
int main
() {
string baris;
// membuka file dalam mode menulis.
ofstream outfile;
// menunjuk ke sebuah nama file
outfile.open("contohfile.txt");
cout << ">= Menulis file, \'q\' untuk
keluar" <<
endl;
//unlimited loop untuk menulis
while(true){
cout << "- ";
//mendapatkan setiap karakter dalam satu baris
getline(cin, baris);
//loop akan berhenti jika anda memasukan karakter q
if(baris == "q") break;
// menulis dan memasukan nilai dari 'baris' ke dalam file
outfile << baris << endl;
}
//selesai dalam menulis sekarang tutup filenya
outfile.close();
//Membuka file dalam mode membaca
ifstream infile;
//menunjuk ke sebuah file
infile.open("contohfile.txt");
cout << endl << ">= Membuka dan
membaca file " <<
endl;
//jika file ada maka
if (infile.is_open())
{
//melakukan perulangan setiap barus
while ( getline (infile,baris) )
{
//dan tampilkan di sini
cout << baris << '\n';
}
//tutup file tersebut setelah selsai
infile.close();
}
//jika tidak ditemukan file maka akan menampilkan ini
else cout
<< "Unable to open file";
return 0;
}
|
File I/O dalam Java
Java menyediakan fungsi untuk
handle file input output. Di sini, kita akan melihat program Java sederhana,
Program ini akan membuka file teks, menulis beberapa baris teks ke dalamnya,
dan menutup file tersebut. Akhirnya, file yang sama dibuka dan kemudian dibaca
dari file yang sudah dibuat. Anda bisa mencoba menjalankan program berikut
untuk melihat hasilnya
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import
java.io.*; public
class DemoJava { public
static void main(String []args) throws IOException { File
file = new File("/tmp/java.txt"); //
Create a File file.createNewFile(); //
Creates a FileWriter Object using file object FileWriter
writer = new FileWriter(file);
//
Writes the content to the file writer.write("This
is testing for Java write...n"); writer.write("This
is second line...n"); //
Flush the memory and close the file writer.flush(); writer.close(); //
Creates a FileReader Object FileReader
reader = new FileReader(file);
char
[] a = new char[100]; //
Read file content in the array reader.read(a); System.out.println(
a ); //
Close the file reader.close(); } } |
Outputnya
adalah:
1
2
|
This is
testing for Java
write... This is
second line... |
File I/O dalam Python
Program berikut menunjukkan fungsionalitas
yang sama untuk membuka file baru, menulis beberapa konten ke dalamnya, dan
akhirnya, baca file yang sama
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# Create
a new file fo =
open("/tmp/python.txt",
"w") # Writes
the content to the file fo.write(
"This is testing for Python write...n"); fo.write(
"This is second line...n"); # Close
the file fo.close() # Open
existing file fo =
open("/tmp/python.txt",
"r") # Read
file content in a variable str
= fo.read(100); print
str # Close
opened file fo.close() |
Outputnya
adalah:
1
2
|
This is
testing for Java write... This is
second line... |
Fungsi
Input dan Output
Input adalah sesuatu data yang
kita masukan ke dalam program.
Input biasanya diambil dari perangakat inputan seperti
keyboard, mouse, kamera, microphone, dll.
Proses adalah langkah-langkah yang
harus dilakukan program untuk menghasilkan output.
Output adalah informasi yang
dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar
komputer.
Pada bahasa pemrograman C, terdapat beberapa fungsi dasar
untuk menampilkan output dan mengambil input.
Fungsi Output pada C
Ada dua macam fungsi yang bisa digunakan untuk menampilkan output:
1. Fungsi printf()
Fungsi
printf()
merupakan
fungsi untuk menampilkan output ke layar komputer. Fungsi ini terdapat pada
library stdio.h
.
Oleh sebab itu, ketika kita diharuskan untuk menuliskan
#include <stdio.h>
di bagian atas program agar bisa
menggunakan fungsi ini.
Berikut ini struktur dasar fungsi
printf()
:
Perhatikan:
"format"
adalah
sebuah teks (string) untuk ditampilkan. Lalu tanda ...
akan berisi sebuah variabel atau nilai untuk
ditampilkan berdasarkan format yang diberikan pada teks "format"
.
Mari kita lihat contohnya:
Buatlah sebuah program C bernama
output.c
, lalu isi dengan kode berikut.#include
<stdio.h>
int
main
(){
printf(
"Hello, ini adalah teks output\n"
);
printf(
"Nama saya %s\n"
,
"Dian"
);
printf(
"Usia saya %d\n"
,
20
);
return
0
;
}
Hasilnya:
Ada beberapa hal yang perlu di perhatikan…
Pada fungsi
printf()
kita
menggunakan simbol %s
, %d
, dan \n
untuk format
teks.
Mari kita bahas arti dari simbol tersebut:
%s
adalah simbol untuk menampilkan nilai string;%d
adalah simbol untuk menampilkan nilai angka atau bilangan desimal;\n
adalah simbol untuk membuat baris baru.
Selain tiga simbol tersebut, masih banyak lagi simbol yang lain.
Simbol
|
Arti
atau Fungsi
|
%c |
untuk menampilkan
karakter
|
%s |
untuk menampilkan
teks (string)
|
%d , %i |
untuk menampilkan
bilangan desimal
|
%f |
untuk menampilkan
bilangan pecahan
|
%o |
untuk menampilkan
bilangan oktal
|
%x |
untuk menampilkan
bilangan heksadesimal
|
\t |
untuk membuat tabs
|
2. Fungsi puts()
Fungsi
puts()
adalah fungsi
untuk menampilkan output. Fungsi ini juga terdapat pada library stdio.h
.
Perbedaanya dengan
printf()
, fungsi puts()
tidak memerlukan format.
Fungsi
puts()
akan selalu
membuat baris baru. Jadi tidak perlu menggunakan simbol \n
seperti pada printf()
.
Contoh program:
fungsi_puts.c
#include
<stdio.h>
int
main
(){
puts(
"Hello World"
);
puts(
"Nama Saya Dian"
);
return
0
;
}
Hasilnya:
Selain fungsi
puts()
, terdapat juga
fungsi putchar()
yang khusus untuk menampilkan satu
karakter saja.
Contoh:
#include
<stdio.h>
int
main
(){
putchar(
'A'
);
return
0
;
}
Maka akan menghasilkan output:
A
Lalu pertanyaannya:
Fungsi manakah yang harus saya pakai?
Jawabannya, tergantung…
Tergantung dari teks apa yang akan ditampilkan.
Apabila di sana kita akan menampilkan teks dan nilai atau variabel, sebaiknya
menggunakan
printf()
karena bisa
membuat format.
Tapi kalau teks yang biasa saja, bisa pakai
puts()
.
Fungsi Input pada C
Pada bahasa C, terdapat beberapa fungsi unutk mengambil input.
Oh iya, input yang akan kita bahas di sini adalah input dari keyboard.
Input juga bisa dari file, kamera, mikrofon, dan sebagainya.
Tapi kita fokus dulu bahas yang paling mudah…
Ini adalah fungsi untuk mengambil input dari keyboard:
1. Fungsi scanf()
Fungsi
scanf()
adalah fungsi
untuk mengambil input dari keyboard. Fungsi ini memiliki format seperti
fungsi printf()
.
Format yang diberikan tergantung dari jenis tipe data apa yang ingin kita
ambil.
Misalnya mau mengambil angka, maka kita bisa pakai
%d
atau %i
.
Mari kita lihat contohnya:
#include
<stdio.h>
int
main
() {
// membuat variabel
char
name[
20
], web_address[
30
];
printf(
"Nama: "
);
scanf(
"%s"
,
&
name);
printf(
"Alamat web: "
);
scanf(
"%s"
,
&
web_address);
printf(
"\n------------------------------\n"
);
printf(
"Nama yang diinputkan: %s\n"
, name);
printf(
"Alamat Web yang diinputkan: %s\n"
, web_address);
return
0
;
}
Hasilnya:
Tapi saat kita menginputkan teks yang mengandung spasi, hasilnya akan
dipecah menjadi dua seperti ini:
Untuk mengatasi masalah ini, kita bisa ubah format yang digunakan
pada
scanf()
menjadi seperti ini:printf(
"Nama: "
);
scanf(
"%[^\n]s"
, name);
Maka fungsi
scanf()
akan menerima
spasi.
Dalam menggunakan
scanf()
, kita dianjurkan menggunakan
simbol &
sebelum nama variabel.
Contoh:
#include
<stdio.h>
void
main
(){
int
a, b, c;
printf(
"Inputkan nilai a: "
);
scanf(
"%i"
,
&
a);
printf(
"Inputkan nilai b: "
);
scanf(
"%i"
,
&
b);
c
=
a
+
b;
printf(
"Hasil a + b: %i"
, c);
}
Simbol
&
berfungsi untuk
mengambil alamat memori dari sebuah variabel.
Fungsi
scanf()
membutuhkan
tempat untuk menyimpan nilai yang akan diinputkan.
Karena itu kita memberikan simbol
&
di depan nama variabel untuk menentukan alamat
memori yang akan digunakan oleh scanf()
.
2. Fungsi gets()
Fungsi
gets()
adalah fungsi
untuk mengambil input dalam satu baris. Fugnsi gets()
tidak memerlukan format seperti scanf()
.
Contoh:
#include
<stdio.h>
int
main
() {
char
name[
50
], web_address[
50
];
printf(
"Nama: "
);
gets(name);
printf(
"Alamat web: "
);
gets(web_address);
printf(
"You entered: %s\n"
, name);
printf(
"Web address: %s\n"
, web_address);
return
(
0
);
}
Hasilnya:
Saat melakukan kompilasi, kita akan mendapatkan peringatan:
warning: the
`
gets'
function
is dangerous and should not be used.
Ini bukan error, melainkan hanya peringatan saja agar tidak menggunakan
fungsi
gets()
.
Mengapa?
Lalu bagaimana solusinya?
Kita bisa menggunakan:
3. Fungsi fgets()
Fungsi
fgets()
lebih aman
dibandingkan gets()
, karena kita bisa
menentukan ukuran buffer dan sumber inputan.
Ukuran buffer adalah batas ukuran panjang string yang diinputkan.
Lalu
stdin
adalah sumber inputan dari keyboard.
Kita juga bisa mengambil input dari file dengan
fgets()
dengan memasukan pointer FILE
pada stdin
.
Untuk lebih jelasnya, mari kita lihat contohnya:
#include
<stdio.h>
int
main
(){
char
name[
50
], email[
50
];
printf(
"Nama: "
);
fgets(name,
sizeof
(name), stdin);
printf(
"Email: "
);
fgets(email,
sizeof
(email), stdin);
printf(
"\n-------------------------\n"
);
printf(
"Nama anda: %s"
, name);
printf(
"Alamat email: %s"
, email);
return
0
;
}
Hasilnya:
Pada contoh program di atas, kita menggunakan fungsi
sizeof()
untuk mengambil ukuran buffer dari
variabel.
Ukuran ini akan menjadi batas maksimum dari inputan.
Sumber
Komentar
Posting Komentar