13. Manipulasi File 2

PHP: Manipulasi File [2/2]

Pendahuluan

Pada pertemuan sebelumnya, kita telah mempelajari beberapa cara untuk membuka dan membaca file dengan PHP. Mulai dari menggunakan fungsi readfile(), fungsi file_get_contents() hingga menggunakan skema fopen() dan variasinya.

Pada pertemuan kali ini, kita akan melanjutkan pembahasan tentang manipulasi file.

Membuat File Baru Dengan fopen()

Seperti yang sudah kita singgung sebelumnya, bahwa fungsi fopen() menerima dua buah paramter:

  • parameter pertama adalah nama file
  • parameter kedua adalah mode pembukaan file

Untuk membuat file baru, kita bisa menggunakan mode waw+ atau a+. Silakan kembali lagi ke pertemuan sebelumnya untuk melihat jenis-jenis mode fopen() yang bisa kita gunakan.

Sebagai contoh, untuk membuat file baru. Kita bisa menggunakan perintah berikut:

<?php

$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'w');

Kode program di atas akan membuat file baru bernama nama-bulan.txt.

Permission File

Kode program di atas tidak mengeluarkan output apa pun.

Akan tetapi jika anda mendapatkan pesan error, maka pastikan bahwa PHP anda memiliki hak akses untuk menulis file pada lokasi yang terkait.

Kita telah berhasil membuat file baru dengan nama nama-bulan.txt. Tapi jika file tersebut kita buka, kita tidak akan mendapati apa pun di sana.

Kita bisa menambahkan konten pada suatu file dengan perintah fwrite().

Ada pun behavior bagaimana cara menulis kontennya: apakah ia menimpa konten yang sudah ada, atau ia tetap mempertahankan konten file sebelumnya, maka itu tergantung mode yang kita pilih saat memanggil fungsi fopen().

Setelah ini, kita akan mencoba dan mempraktikkan beberapa mode fopen().

Menghapus Konten dan Menimpanya Dengan Yang Baru

Mode yang pertama adalah mode w. Alias mode write only. Mode tersebut memiliki 2 tugas utama:

  • membuat file baru jika file-nya tidak ada (sudah kita praktikkan di atas)
  • meletakkan pointer ke baris pertama konten, sehingga ketika kita lakukan proses penulisan dengan fungsi fwrite(), isi konten yang lama akan ditimpa dengan yang baru.

Kita telah membuat file nama-bulan.txt. Kita akan coba untuk menulis sesuatu di dalam file tersebut. Perhatikan kode program berikut:

<?php

$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'w');

$konten = "Januari\nFebruari\nMaret\nApril\nMei";

fwrite($file, $konten);

fclose($file);

Ketika kita jalankan program di atas lalu kita buka file nama-bulan.txt. Kita akan mendapati konten file tersebut adalah sebagai berikut:

Januari
Februari
Maret
April
Mei

Anda bisa:

  • mengganti isi dari variabel $konten
  • lalu mengeksekusi ulang skrip tersebut
  • kemudian lihat apa yang terjadi dengan isi dari file nama-bulan.txt

Mengedit Dengan Mempertahankan Konten Sebelumnya

Setelah melakukan percobaan di atas, kita tahu bahwa file nama-bulan.txt akan senantiasa ditimpa dengan konten baru karena kita menggunakan mode w ketika memanggil fungsi fopen().

Berbeda jika kita menggunakan mode a, maka behavior yang akan kita dapatkan adalah:

  • sistem akan berusaha membuka file yang dimaksud. Jika tidak ada, ia akan membuatnya.
  • sistem akan meletakkan pointer pada bagian paling akhir dari file tanpa menghapus konten yang sebelumnya sudah ada.

Silakan ganti kode program di atas dengan kode program yang baru:

<?php

$namaFile = 'nama-bulan.txt';
$file = fopen($namaFile, 'a');

$konten = "Juni\nJuli\nAgustus\nSeptember\nOktober";

fwrite($file, $konten);

fclose($file);

Ketika saya jalankan kode program di atas sebanyak satu kali, saya mendapatkan output sebagai berikut:

Januari
Februari
Maret
April
MeiJuni
Juli
Agustus
September
Oktober

Perhatikan baris ke 5 dari output di atas, kata “Mei” dan “Juni” bergabung jadi satu. Itu karena output dari file sebelumnya tidak diakhiri dengan kode \n alias karakter ganti baris.

Untuk mode lainnya dari fopen() anda bisa melihatnya lagi pada tutorial manipulasi file php bagian 1. Anda bisa mengeksplorasinya secara mandiri.

Mengkopi File

Di antara hal yang lazim dilakukan dalam rangka memanipulasi file dalam PHP adalah: mengkopi file.

Untuk mengkopi atau menggandakan file, kita bisa memanggil fungsi bawaan PHP bernama copy().

Fungsi tersebut menerima 2 parameter:

  1. Parameter untuk nama file yang akan dikopi
  2. Lokasi/Nama file baru hasil kopian

Perhatikan contoh berikut, kita akan menggandakan file nama-bulan.txt yang telah kita buat:

<?php

copy('nama-bulan.txt', 'nama-bulan-indo.txt');

Kita akan mendapatkan file baru yaitu nama-bulan-indo.txt.

├── 13-manipulasi-file-part-2
    ├── index.php
    ├── nama-bulan-indo.txt
    └── nama-bulan.txt

Memindahkan dan Merename File

Untuk memindahkan file, anda bisa menggunakan fungsi rename(). Cara kerjanya sama saja dengan fungsi copy().

Ia menerima 2 paramter:

  1. parameter untuk nama/path file yang lama
  2. parameter untuk nama/path file yang baru

Fungsi rename() akan memindahkan suatu file dari lokasi lama ke lokasi baru. Jika lokasi baru ternyata masih dalam satu direktori dan nama filenya berbeda, maka fungsi tersebut secara tidak langsung akan merename file yang dimaksud.

Kita akan coba memindahkan file nama-bulan.txt ke lokasi yang sama, tapi dengan nama baru yaitu nama-bulan-old.txt. Perhatikan kode program berikut:

<?php

rename('nama-bulan.txt', 'nama-bulan-old.txt');

Jika kita eksekusi, maka file nama-bulan.txt seolah-olah ter-rename dengan menggunakan fungsi rename().

├── 13-manipulasi-file-part-2
    ├── index.php
    ├── nama-bulan-indo.txt
    └── nama-bulan-old.txt

Menghapus File

Untuk menghapus file, kita bisa menggunakan fungsi unlink().

Perhatikan kode program berikut:

<?php

unlink('nama-bulan-old.txt');

Kode program di atas akan menghapus file nama-bulan-old.txt.

Beberapa Fungsi Lainnya

Selain fungsi-fungsi yang telah kita pelajari di dua pertemuan ini, masih ada fungsi-fungsi lain yang bisa anda coba:

  • mkdir(): berfungsi untuk membuat sebuah direktori
  • rmdir(): menghapus suatu folder. Tapi foldernya harus kosong.
  • is_dir(): berfungsi untuk memeriksa apakah suatu path adalah direktori atau bukan
  • is_file(): berfungsi untuk memeriksa apakah suatu path adalah file atau bukan
  • scandir(): mengembalikan konten dari sebuah direktori dalam bentuk array (konten bisa berupa file dan juga sub-direktori)
  • getcwd(): mengembalikan lokasi direktori yang sedang aktif

Kesimpulan

Bahasa pemrograman PHP adalah bahasa yang berjalan di server. Sehingga proses manipulasi file adalah suatu hal yang hampir menjadi keniscayaan.

Oleh karena itu, tidak heran bahwasanya PHP datang dengan berbagai macam fungsi bawaan yang memungkinkan kita bisa memanipulasi file mau pun direktori dengan mudah.

Pembahasan Selanjutnya

Pada pertemuan selanjutnya, insyaallah kita akan mengambil pembahasan terakhir untuk seri tutorial PHP tingkat menengah ini: yaitu pembahasan tentang regular expression.

Jangan lupa untuk share tutorial ini, ya! Terima kasih banyak.