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():
Fungsi printf di c
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:
Output program C
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().
Fungsi Puts pada C
Contoh program: fungsi_puts.c
#include <stdio.h>
 
int main(){
    puts("Hello World");
    puts("Nama Saya Dian");
    
    return 0;
}
Hasilnya:
Program C dengan fungsi puts
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().
Fungsi scanf di bahasa c
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:
Program input dengan scanf di C
Tapi saat kita menginputkan teks yang mengandung spasi, hasilnya akan dipecah menjadi dua seperti ini:
Input scanf mengandung spasi
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().
Nanti ini akan kita bahas lagi pada Pointer.

2. Fungsi gets()

Fungsi gets() adalah fungsi untuk mengambil input dalam satu baris. Fugnsi gets() tidak memerlukan format seperti scanf().
Fungsi gets di bahasa c
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:
Program input dengan gets di C
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?
Karena dapat menyebabkan masalah buffer overflow pada program. 1
Lalu bagaimana solusinya?
Kita bisa menggunakan:

3. Fungsi fgets()

Fungsi fgets() lebih aman dibandingkan gets(), karena kita bisa menentukan ukuran buffer dan sumber inputan.
Fungsi fgets di bahasa c
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:
Contoh program dengan fungsi fgets
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

Postingan Populer