Bahasa Java

Belajar Pemrograman Java Dari Dasar

Belajar Membuat Game 2D Dengan Java dan Netbeans Bagian 4: Thread dan Game Loop

Pada tutorial belajar membuat game 2D dengan java bagian 4 ini anda akan mempelajari tentang thread dan juga game loop.

Jadi, apa itu thread pada Java?

Di sini tidak akan dijelaskan penjelasan mengenai thread secara teknis, karena begitu banyak artikel dan tutorial di luar sana yang membahas mengenai topik tersebut.

Saya hanya akan menjelaskan sesimpel mungkin mengenai thread ini dalam tujuan pembuatan game sederhana ini.

Thread adalah program mini.

Maksudnya?

Pada program game ini terdapat beberapa class. Dan misalkan ketika anda hanya ingin program class Game yang dijalankan saja, ini di sebut dengan thread. Jadi thread ini adalah program mini yang terdapat di dalam program besar, dalam hal ini program game 2D yang anda buat. Hanya inilah poin penting yang harus anda pahami di sini sebenarnya.

Tapi berikut ini adalah pengetahuan lebih lanjut mengenai thread.

Setiap thread  kendalikan dan dibuat  oleh class java.lang.Thread. Ketika sebuah thread di buat maka itu menjadi prioritas. Thread dengan prioritas paling tinggi akan dieksekusi lebih dulu, baru kemudian diikuti oleh thread lain yang prioritasnya lebih rendah.

Setiap program Java memiliki setidaknya satu thread yang dikenal sebagai thread utama. Thread ini dibuat oleh JVM pada saat program dijalankan, ketika method main dipanggil oleh thread utama.

Thread dapat dihentikan oleh JVM ketika salah satu kondisi di bawah ini terpenuhi:
  • Method exit dipanggil dan disahkan
  • Tidak ada lagi thread yang berjalan di belakang layar (daemon thread) 

Membuat Thread Pada Class Game

Sekarang anda akan membuat thread pada class Game. 

Apa artinya?

Artinya adalah segala sesuatnya yang terdapat di class Game akan dijalankan secara terpisah dari semua kode lainnya yang terdapat dalam aplikasi. Atau dengan kata lain menjalankan class Game secara terpisah dari keseluruhan kode program.

Untuk melakukannya anda harus mengimplementasikan interface Runnable dan mengimplementasikan method abstrak run() dengan mengoverride-nya pada class Game. 

Berikut ini adalah update kode program class Game dengan thread:

package com.bahasajava.gamejava;

import com.bahasajava.gamejava.gamedisplay.GameDisplay;
import java.util.logging.Level;
import java.util.logging.Logger;

//Mnegimplementasikan interface Runnable untuk thread
public class Game implements Runnable {
   private GameDisplay gameDisplay;
   
   public int lebar, tinggi;
   
   private Thread thread;//thread yang dijalankan
   
   public Game(String judul, int lebar, int tinggi){
       this.lebar = lebar;
       this.tinggi = tinggi;
       //objek gameDisplay memiliki konstruktor dengan parameter
       //judul, lebar, dan tinggi, jadi semua parameter ini harus terpenuhi
       gameDisplay = new GameDisplay(judul, lebar, tinggi);
   }
   
   //Method ini akan menginisialisasi semua graphic
   //dan akan memastikan semuanya siap sebelum game dijalankan
   private void inisialisasi(){
       
   }

    //run() adalah method abstract yang harus diimplentasikan
    //ketika class mengimplementasikan Runnable
    @Override
    public void run() {
        inisialisasi();//Memanggil method inisialisasi()
        
        //Di sini kita akan menjalankan loop game
    }
    
    //synchronized digunakan ketika langsung berhubungan dengan thread
    //startThread() akan menjalankan thread
    public synchronized void startThread(){
        //Konstruktor Thread mengambil parameter class mana yang 
        //akan di jalankan, dalam hal ini adalah class Game
        //oleh karena itu menggunakan keyword this
        thread = new Thread(this);
        thread.start();//Method start() ini akan menjalankan method run()
    }
    
    //stopThread akan menghentikan thread
    public synchronized void stopThread(){
       //Method join() melemparkan checked exception sehingga
       //akan memaksa anda untuk menggunakan blok try-catch
       //atau bisa juga dengan menggunakan clausa Throws
       try {
           thread.join();//Method join() akan menunggu thread untuk "mati"
       } catch (InterruptedException ex) {
           Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
       }
    }  
    
}

Membuat Loop Pada Game

Secara garis besarnya, setiap game apapun memiliki diagram loop seperti berikut ini:
java game loop


Dari diagram di atas kita bisa menyimpulkan:

  • Pertama ketika program dijalankan, apakah program tersebut di close? Jika ya program dihentikan. Tapi bila tidak, maka input dari user akan didapatkan.
  • Setelah itu, semua variabel, posisi objek, grafik, dan lainnya akan diupdate.
  • Kemudian, proses render atau menggambar akan dilakukan
  • Proses akan kembali lagi ke tahap awal dan loop atau perulangan akan terus berjalan sampai dengan program di hentikan.

Berikut ini adalah update koding dari class Game yang telah diberi loop dan juga ada beberapa method tambahan yaitu inisialisasi(), updateGame, dan render().

package com.bahasajava.gamejava;

import com.bahasajava.gamejava.gamedisplay.GameDisplay;
import java.util.logging.Level;
import java.util.logging.Logger;

//Mnegimplementasikan interface Runnable untuk thread
public class Game implements Runnable {
   private GameDisplay gameDisplay;
   
   public int lebar, tinggi;
   public String judul;
   
   private Thread thread;//thread yang dijalankan
   
   private boolean gameRunning = false;//Untuk mengontrol while loop
   
   public Game(String judul, int lebar, int tinggi){
       this.lebar = lebar;
       this.tinggi = tinggi;
       this.judul= judul;
       
   }
   
   //Method inisialisasi() akan menginisialisasi semua graphic
   //dan akan memastikan semuanya siap sebelum game dijalankan
   private void inisialisasi(){
       //objek gameDisplay memiliki konstruktor dengan parameter
       //judul, lebar, dan tinggi, jadi semua parameter ini harus terpenuhi
       gameDisplay = new GameDisplay(judul, lebar, tinggi);
   }
   
   //Method updateGame() akan terus melakukan update game
   private void updateGame(){
       
   }
   
   //Method render() untuk merender 
   private void render(){
       
   }

    //run() adalah method abstract yang harus diimplentasikan
    //ketika class mengimplementasikan Runnable
    @Override
    public void run() {
        inisialisasi();
        
        //Di sini kita akan menjalankan loop game
        while(gameRunning){
            updateGame();
            render();
        }
        stopThread();
    }
    
    //synchronized digunakan ketika langsung berhubungan dengan thread
    //startThread() akan menjalankan thread
    public synchronized void startThread(){
        
        if(gameRunning)
            return;
        
        gameRunning = true;
        
        //Konstruktor Thread mengambil parameter class mana yang 
        //akan di jalankan, dalam hal ini adalah class Game
        //oleh karena itu menggunakan keyword this
        thread = new Thread(this);
        thread.start();//Method start() ini akan menjalankan method run()
    }
    
    //stopThread akan menghentikan thread
    public synchronized void stopThread(){
       if(!gameRunning)
           return;
       
       gameRunning = false;
        
       //Method join() melemparkan checked exception sehingga
       //akan memaksa anda untuk menggunakan blok try-catch
       //atau bisa juga dengan menggunakan clausa Throws
       try {
           thread.join();//Method join() akan menunggu thread untuk "mati"
       } catch (InterruptedException ex) {
           Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
       }
    }  
    
}

Penjelasan kode


Sekarang fokus ke method startThread() pada line 59. Di body method terdapat pernyataan if, pada line 61 - 62 yaitu:

if(gameRunning)
            return;

Ini artinya,jika game sudah berjalan maka jangan eksekusi kode berikutnya, yaitu kode di line 64 - 70. Dan jika game belum berjalan, maka gameRunning akan di set ke nilai true (line 64 di eksekusi) dan tentu saja kode di line 69 - 70 juga akan dieksekusi.

Perhatikan, kode di line 70, yaitu thread.start() akan memanggil method run().

Nah, apa yang dilakukan oleh method run() tersebut?

  • Pertama, method tersebut akan memanggil method inisialisasi yang akan menampilkan window game (line 47)
  • Kedua, method ini akan menjalankan loop ketika game berjalan, jadi method updateGame() dan render() akan terus dipanggil, selama parameter gameRunning bernilai true,(line 50-53). Secara default anda sudah mengatur nilai gameRunning bernilai false, lihat line 16.
  • Ketiga, ketika game berhenti atau gameRunning bernilai false maka method stopThread() akan dipanggil, lihat line 54.

Selanjutnya, anda bisa melihat body method stopThread(),line 75 - 88.

Perhatikan di line 75 - 76 ada pernyatan if:

if(!gameRunning)
           return;

Artinya adalah jika game tidak berjalan (false) maka kode di bawahnya tidak perlu dieksekusi, yaitu kode line 78 - 87. Sebaliknya,jika gameRunning itu bernilai true, maka gameRunning akan di set menjadi false, kemudian kode di bawahnya dieksekusi.

Menjalankan thread

Untuk menjalankan thread ini kita kembali ke class Main, yang memiliki main method.

Berikut ini adalah kode class Main tersebut dari tutorial sebelumnya:

package com.bahasajava.gamejava;

public class Main {
    //main method
    public static void main(String[] args) {
       new Game("My Java Game", 640, 360);
    }
    
}

Cobalah untuk menjalankan program dan anda tidak akan melihat window game tersebut.

Apa yang terjadi?

Ini dikarenakan anda tidak memanggil method startThread().

Dan method start ini adalah method objek. Jadi anda harus membuat objek Game terlebih dahulu untuk memanggil method tersebut.

Lihat kode di bawah ini untuk memanggil method startThread().

package com.bahasajava.gamejava;

public class Main {
    //main method
    public static void main(String[] args) {
       Game game = new Game("My Java Game", 640, 360);
       game.startThread();//objek Game memanggil method start thread
    }
    
}

Sekarang coba jalankan aplikasi lagi, anda akan melihat window game ditampilkan di layar. Namun sekarang anda sudah menggunakan thread.

Admin harap penjelasan in masuk akal dan mudah diterima oleh teman-teman meskipun agak rumit. Sampai di sini dulu ya. Pada tutorial berikutnya kita akan masuk ke BufferStrategy dan juga dasar grafik.

Baca juga:
Bagian 3

Belajar Membuat Game 2D Dengan Java dan Netbeans Bagian III: Canvas

Oke, lanjut lagi ya. Pada bagian II dari tutorial ini, anda sudah membuat window untuk menampilkan game. Tapi, masalahnya adalah tidak ada grafik atau gambar yang ditampilkan pada layar.

Sebelum beranjak ke situ, anda juga sudah mengetahui jika sebuah komponen java.awt.Canvas akan merepresentasikan area persegi yang kosong dan dapat digunakan untuk menampung grafik-grafik tersebut.

Oleh sebab itu, pembahasan kali ini adalah mengenai Canvas terlebih dahulu. Jadi kita akan menampilkan gambar atau grafik seperti player, background, dan lain-lain melalui Canvas nantinya.

Dengan kata lain anda akan menggambar semuanya pada objek Canvas. Kemudian, setelah semua grafik selesai digambar, maka gambar tersebut akan disimpan pada frame. Selanjutnya, anda bisa melihat grafik tersebut melalui layar. Seperti inilah dasar cara kerja program yang harus anda pahami sebenarnya.

Oke, lanjut koding lagi.

Berikut ini adalah kode program untuk class GameDisplay, setelah di update dengan Canvas dan pengaturannya.

package com.bahasajava.gamejava.gamedisplay;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;

public class GameDisplay {
    
    private JFrame frame;//sebagai container komponen lainnya
    
    private int lebar, tinggi;//dalam ukuran piksel
    private String judul;
    
    private Canvas canvas;//Untuk meletakkan gambar atau grafik
    
    //Constructor
    public GameDisplay(String judul, int lebar, int tinggi){
        this.judul = judul;
        this.lebar = lebar;
        this.tinggi = tinggi;
        
        buatGameDisplay();//Memanggil method buatGameDisplay();
    }
    
    private void buatGameDisplay(){
        frame = new JFrame(judul);//Mengatur judul
        frame.setSize(lebar, tinggi);//Mengatur ukuran lebar dan tinggi window
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Agar window di close sempurna
        frame.setResizable(false);//Agar ukuran window tidak bisa di ubah
        frame.setLocationRelativeTo(null);//Agar window berada ditengah layar
        frame.setVisible(true);//Agar window terlihat saat ditampilkan
        
        canvas = new Canvas();//Membuat objek canvas
        
        //Memilih ukuran canvas yang sesuai dengan ukuran lebar dan tinggi frame
        canvas.setPreferredSize(new Dimension(lebar, tinggi));
        
        //Untuk selalu menjamin ukuran kanvas sesuai yang diinginkan
        canvas.setMaximumSize(new Dimension(lebar, tinggi));
        canvas.setMinimumSize(new Dimension(lebar, tinggi));
        
        //Hanya untuk menguji jika canvas telah ditambahkan dengan menambahkan background warna merah
        canvas.setBackground(Color.red);//Nanti hapus lagi baris kode ini ya!!!
        
        frame.add(canvas);//Menambahkan canvas ke dalam frame
        
        //Agar window pas sesuai dengan ukuran yang diinginkan atau dipilih
        //sehingga bisa melihat ukuran canvas secara keseluruhan
        frame.pack();
        
    }
}

Pada line 37 sampai 41, anda akan melihat pengaturan ukuran Canvas harus menggunakan class Dimension. Jadi anda tidak bisa secara sederhana hanya memasukkan nilai variabel lebar dan tinggi seperti pada JFrame untuk mengatur ukurannya. Dalam kasus ini adalah objek Dimension adalah anonymous objek. Class Dimension ini akan mengenkapsulasikan lebar dan tinggi dari suatu komponen dalam satu objek tunggal.

Anda kemudian bisa menuju ke class Main dan mengeksekusi lagi program ini.

Berikut ini adalah tampilan window game yang anda buat dengan canvas yang memiliki background merah.



Warna background merah itu hanya untuk menguji saja jika canvas sudah ditempatkan dalam frame, anda bisa menghapus kode di line 4 dan 44 untuk menghilangkan warna background tersebut.

Membuat Class Yang Memegang Kode Dasar Game


Selanjutnya, anda bisa membuat satu class yang sangat penting karena class ini yang memegang kode dasar dari game seperti memulai, menjalankan, menghentikan game, dan sebagainya.

Buat satu class dalam package com.bahasajava.gamejava dan beri nama class tersebut Game.


class Game java Netbeans


Class game ini akan membutuhkan objek GameDisplay. Jadi kita perlu membuat variabel instance dari class GameDisplay dari pada class Game.

Berikut ini adalah kode pada class Game:

package com.bahasajava.gamejava;

import com.bahasajava.gamejava.gamedisplay.GameDisplay;

public class Game {
   private GameDisplay gameDisplay;
   
   public int lebar, tinggi;
   
   public Game(String judul, int lebar, int tinggi){
       this.lebar = lebar;
       this.tinggi = tinggi;
       //objek gameDisplay memiliki konstruktor dengan parameter
       //judul, lebar, dan tinggi, jadi semua parameter ini harus terpenuhi
       gameDisplay = new GameDisplay(judul, lebar, tinggi);
   }
}

Jadi, ketika objek Game ini diinisialisasi maka kita menginginkan agar objek gameDisplay (lihat line 15) di tampilkan pada layar.

Oleh sebab itu, anda harus membuat objek Game ini pada class Main, yaitu ketika program mulai dieksekusi.

Berikut ini kode yang telah di update pada class Main:

package com.bahasajava.gamejava;

public class Main {
    //main method
    public static void main(String[] args) {
        new Game("My Java Game", 640, 360);
    }
    
}

Sekarang cobalah anda jalankan programnya, anda masih akan mendapatkan tampilan yang sama. Namun, sekarang objek dari class Game telah berperan untuk menampilkan window.

Ok, sampai di sini dulu ya. Pada tutorial berikutnya anda akan belajar menggunakan Threads dan memahami game loop, sebagai konsep penting untuk semua game.

Baca juga:
Bagian I
Bagian II

Belajar Membuat Game 2D Dengan Java dan Netbeans: Bagian I

Halo guys, kali ini admin ingin berbagi tutorial dasar membuat game dengan program Java menggunakan Netbeans.

Belajar membuat game Java ini benar-benar dari nol atau dalam bahasa kerennya “from scratch”. Sebenarnya penggunaan Netbeans tidak wajib, kalau teman-teman suka menggunakan IDE yang lain seperti Eclipse juga tidak masalah.

Berbeda ketika membuat game menggunakan game engine yang sudah memiliki banyak fasilitas seperti Unity. Belajar membuat game dari dasar membutuhkan koding dari awal. Tapi keuntungannya adalah anda bisa lebih memahami kode-kode Java tersebut. Asyik, kan?.

Jika sebelumnya anda pernah menjalankan kode Java untuk sebuah game, tapi tidak mengetahui maksud dari kode-kode tersebut, dan anda ingin mencari tahu, berarti anda memiliki semangat untuk terus berkembang.

Well, jadi kita mulai dari mana ya? Tenang dula, sekarang pertanyaannya adalah, “Apakah anda sudah mengetahui mengenai dasar pemrograman Java?”.

Bila ya, anda bisa lanjut. Bila belum, saran admin sih, ini cuma saran lho,  lebih baik mengetahui dasar-dasar coding Java terlebih dahulu sebelum masuk ke tutorial membuat game 2D ini, setidaknya sudah memahami mengenai variabel, method, class dan objek. Karena di sini admin tidak akan memberikan penjelasan ulang mengenai basic program Java.

Anda akan lebih difokuskan pada pembuatan game dengan Java, dan membahas mengenai materi dasar seperti window, graphis, render, dan masih banyak lagi. Nanti dari sini, anda bisa lebih mudah memahami framework Java lintas platform untuk game seperti LibGDX.

Untuk persiapannya anda bisa menggunakan IDE Netbeans, bagi yang belum memilikinya silakan mengunduhnya secara gratis.  Sedangkan untuk tutorial penginstalannya dan penggunaannya anda bisa melihat di belajar Java Netbeans untuk pemula.

Membuat Project di Netbeans


Oke, langsung saja, anda bisa membuat project baru dengan di Netbeans, bisa di beri nama Game Java.
  1. Buka IDE Netbeans, pilih File, kemudian Pilih New Project

  2. Kemudian akan muncul jendela baru dan pada bagian Categories pilih Java, terus untuk Projects pilih Java application. Kemudian pilih Next.
  3. membuat project baru netbeans



  4. Setelah itu masukkan pada text field Project Name, yaitu Game Java. Sementara itu untuk Project Location dan Project Folder anda bisa menentukannya sendiri , di direktori mana anda akan menyimpan project tersebut dan pada folder yang anda tentukan. Jangan beri checklist pada checkbox Create Main Class.
  5. memberi nama project netbeans

  6. Setelah itu,pilih Finish.

Membuat Package dan Class

Setelah project baru dibuat dengan nama Game Java, kemudian di dalam project tersebut anda bisa membuat package. Penggunaan package ini bertujuan untuk memudahkan pengorganisiran class-class Java. Terutama jika suatu saat nanti anda bekerja dengan project yang besar.

  1. Klik kanan pada project, dalam hal ini adalah Game Java. Kemudian pilih New, lalu pilih Package.

  2. Masukkan nama package, di sini saya memberinya nama com.bahasajava.gamejava, kemudian tekan Finish.
  3. memberi nama package java netbeans
  4. Setelah itu klik kanan pada package com.bahasajava.gamejava, pilih New, pilih Java Class. Beri nama class tersebut Main. Kemudian tekan Finish.

  5. membuat class pada package java netbeans
  6. Class Main ini akan bertanggung jawab penuh untuk start up game yang anda buat. Oleh karena itu, silakan beri main method pada class tersebut. Main method ini adalah tempat pengeksekusian program dalam hal ini game. 

  7. memberi main method pada java class netbeans


Oke, sampai di sini dulu ya, selanjutnya anda akan masuk kedalam pembuatan window untuk game dan juga pembuatan class-class lainnya.

Baca juga:
Bagian II
Bagian III

Belajar Membuat Game 2D Dengan Java dan Netbeans Bagian II: Window

Hai guys, pada bagian I dari belajar membuat game 2D dengan Java dan Netbeans anda sudah memiliki sebuah class dengan nama Main, yang berada di dalam package com.bahasajava.gamejava.

Selanjutnya, sekarang anda akan menampilkan window pada layar menggunakan JFrame.

Karena class Main hanya digunakan untuk menjalankan game saja, maka untuk tujuan ini kita bisa membuat class baru.

Membuat Class Untuk Menampilkan Window

Tapi, agar mudah dipahami, admin rasa kita harus belajar dari analogi.

Ketika anda melihat foto yang menggunakan bingkai atau frame, anda bisa mengetahui kalo foto itu terdiri dari frame yang menampung kertas foto. Selanjutnya kertas foto itu yang digunakan untuk menempatkan gambar.

Apa hubungannya dengan ini?

Baca pelan-pelan ya, biar mudah di pahami...

Dalam Java, ketika anda ingin menggambar atau menempatkan objek gambar maka anda membutuhkan area kosong yang bisa melakukannya. Dan, untuk menampilkan gambar dan area kosong itu, anda juga membutuhkan objek container atau wadah atau frame yang bisa menampung semuanya.

Java  telah menyediakan banyak class-class yang sangat berguna untuk mendukung program apapun yang anda buat.

Anda bisa menggunakan class Canvas yang merupakan representasi area blank berbetuk persegi untuk meletakkan gambar yang bisa berenteraksi dengan user. Nah, objek Canvas itu adalah ibarat kertas foto kosong dan harus di simpan menggunakan wadah atau container, agar nantinya bisa ditampilkan.

Sedangkan yang bertindak sebagai wadah atau container adalah objek dari komponen Swing yaitu JFrame. Dalam Java, JFrame dan Canvas ini memiliki berbagai method dan properti, sama seperti class-class Java lainnya termasuk class yang anda buat nanti.

Sekarang inilah tujuan anda, hanya menampilkan window blank dengan ukuran tertentu sebagai arena game nantinya, tanpa canvas.

Untuk itu anda butuh class yang bisa menghasilkan objek yang bisa melakukannya.

Ok, ikuti langkah berikut:

  • Pada project Game Java yang sudah anda buat sebelumnya, buatlah package baru dengan nama com.bahasajava.gamejava.gamedisplay
  • Pada package baru tersebut buat sebuah class dengan nama GameDisplay
Tulis kode berikut ini pada class GameDisplay:
package com.bahasajava.gamejava.gamedisplay;

import java.awt.Canvas;
import javax.swing.JFrame;

public class GameDisplay {
    
    private JFrame frame;//sebagai container komponen lainnya
    
    private int lebar, tinggi;//dalam ukuran piksel
    private String judul;
    
    //Constructor
    public GameDisplay(String judul, int lebar, int tinggi){
        this.judul = judul;
        this.lebar = lebar;
        this.tinggi = tinggi;
        
        buatGameDisplay();//Memanggil method buatGameDisplay()
    }
    
    private void buatGameDisplay(){
        frame = new JFrame(judul);//Mengatur judul
        frame.setSize(lebar, tinggi);//Mengatur ukuran lebar dan tinggi window
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Agar window di close sempurna
        frame.setResizable(false);//Agar ukuran window tidak bisa di ubah
        frame.setLocationRelativeTo(null);//Agar window berada ditengah layar
        frame.setVisible(true);//Agar window terlihat saat ditampilkan
    }
}

Dan untuk sekedar mengujinya, tulis kode berikut pada class Main:

package com.bahasajava.gamejava;

import com.bahasajava.gamejava.gamedisplay.GameDisplay;


public class Main {
    //main method
    public static void main(String[] args) {
        new GameDisplay("My Java Game", 640, 360);//membuat objekGameDisplay dengan constructor
    }
    
}

Sekarang, jalankan programnya atau tekan shortcut F6. Semoga anda memperoleh hasil seperti gambar di bawah ini:



Jika sudah, anda sudah berhasil membuat frame window, maka selanjutnya anda akan menempatkan canvas pada window tersebut, sebagai tempat meletakkan gambar.

Ok, sampai di sini dulu ya, lebih baik tahap-demi tahap tutorialnya agar lebih mudah dipahami.

Baca juga:
Bagian I
Bagian III

Cara Menampilkan List File Dari Suatu Direktori Dengan Java

Halo gan, pada kesempatan kali ini akan dibahas cara untuk mengetahui list file dari suatu direktori. Untuk melakukan ini, anda bisa menggunakan method dari class File, yaitu:

public File[] listFiles()

Method ini akan mengembalikan array dari pathname abstrak yang menunjukkan file dalam direktori yang ditandai dengan pathname abstrak ini. Jika pathname abstrak ini tidak menunjukkan direktori, maka method ini akan mengembalikan null.


Menampilkan isi direktori dengan program Java

Sebenarnya apa itu pathname abstrak?

Jika anda membaca Java API kemudian pada bagian dokumentasi mengenai class File yang terdapat pada package java.io maka pada beberapa method-methodnya ada istilah pathname abstrak (abstract pathname). Ini akan membingungkan awalnya, tapi penting juga untuk diketahui sebenarnya.
Pathname abstrak adalah objek dari class java.io.File dan string pathname adalah objek java.lang.String. Keduanya mereferensikan file yang sama yang terdapat pada disk.

Contoh program menampilkan list file dari suatu direktori

Misalkan pada direktori C:\bahasajavacom\, terdapat file:
  • myfile.docx (Word)
  • myfile.txt (Text)
  • myfile.xlxs (Excel)
Maka untuk menampilkan file-file tersebut pada konsol:

package com.bahasajava.io;

import java.io.File;
import java.io.IOException;

public class MenampilkanFileDirektori {
    
    private static final String DIR = ("C:\\bahasajavacom");
    
    public static void main(String[] args) {
       
       File file = new File(DIR);
        
       File [] myFiles = file.listFiles();
       System.out.println("List file dari direktori " + DIR + " adalah:"); 
       //foreach loop
        for(File files : myFiles){
            try {
                System.out.println(files.getCanonicalPath());
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }             
}

Output:
List file dari direktori C:\bahasajavacom adalah:
C:\bahasajavacom\myfile.docx
C:\bahasajavacom\myfile.txt
C:\bahasajavacom\myfile.xlsx

Demikianlah cara menamilkan isi direktori dengan mengguanakan program Java. Semoga contoh yang simpel ini bisa lebih mudah dipahami.

Inilah 26 Situs Tempat Belajar Pemrograman Interaktif Dari Nol Untuk Pemula

Situs Tempat Belajar Pemrograman Interaktif Dari Nol Untuk Pemula - Memiliki skill dalam pemrograman merupakan  aspek terpenting dalam membangun situs web apa pun. Para desainer dan juga web developer perlu belajar memprogram dan membuat kode ketika mempelajari pemrograman untuk membangun situs web. Selain belajar reguler, banyak juga situs web interaktif tertentu yang tersedia di internet.  Ini tentunya akan membantu anda  untuk belajar dan memperoleh lebih banyak informasi dan pengetahuan di luar penddikan reguler Anda.

tempat belajar pemrograman interaktif dari nol untuk pemula


Sebagai orang yang memiliki tekad kuat untuk belajar, maka anda dianjurkan untuk mengunjungi situs web tersebut. Tentunya jika anda tertarik ingin mempelajari lebih lanjut tentang bahasa pemrograman. Artikel ini akan memberi anda mengenai beberapa informasi dasar dari situs-situs web interaktif yang diharapkan bisa menolong anda untuk terus mengasah kemampuan yang ada pada pemrograman. Melalui situs ini, anda juga dapat memilih jenis banyak bahasa pemrograman terbaik yang anda butuhkan dan lebih banyak lagi ilmu untuk anda.

Daftar Situs Terbaik Untuk Belajar Pemrograman Secara Interaktif

Berikut ini adalah daftarnya:

1. Codecademy

Apakah anda merasa antusias ketika belajar koding untuk pemrograman? Maka Codecademy adalah yang terbaik yang dapat anda pilih. Situs web ini ditampilkan sebagai salah satu dari 50 situs teratas di Time pada tahun 2013. Dengan sesi pembelajaran yang interaktif memang dapat membuat siapa pun tertarik belajar bahasa pemrograman selama mereka merasa memiliki kemauan.

2. CodeCombat

Ingin bermain game sambil belajar koding? Disinilah tempatnya. CodeCombat adalah salah satu situs web  tempat para anda dapat belajar koding. Hal yang menjadi daya tarik tersendiri adalah anda tetap belajar pemrograman sambil memainkan game strategi mutiplayer.

Anda dapat bersenang-senang dan pada saat yang sama belajar coding dengan berbagai bahasa pemrograman seperti Python dan JavaScript dari situs web interaktif ini. Tujuan utama dari pendiri situs ini adalah untuk membuat pengguna senang saat belajar, dengan demikian pengetahuan yang diperoleh menjadi lebih maksimal karena mereka menikmatinya.

3. TeamTreehouse

Apakah anda saat ini sedang belajar mengenai desain web? Maka TeamTreehouse bisa menjadi pilihan yang baik. Anda dapat memelajari desain dan pengembangan web melalui situs web interaktif ini. Situs ini juga memiliki tutorial video untuk para siswanya dan fokus untuk membantu mereka belajar tentang HTML dan Ruby. Selanjutnya anda dapat menonton video-video dan mempeljarinya. Kemudian secara bertahap anda dapat mengikuti latihan untuk menguji pengetahuan dan mengukur sejauh mana anda telah belajar dari sesi tersebut.

4. CodePad

CodePad adalah compiler/interpreter online. Ya, di sini anda dapat memelajari dan menjalankan berbagai bahasa pemrograman. Diantaranya adalah:
  • C
  • C++
  • D
  • Haskell
  • Lua
  • OCaml
  • PHP
  • Perl
  • Plain Text
  • Python
  • Ruby
  • Scheme
  • Tcl

5. CodingBat

Tertarik untuk mempelajari Java atau Python? Disinilah tempatnya. CodingBat ini ibarat taman bermain untuk pengujian kode secara online dengan banyak tutorial yang bermanfaat. Selain itu, juga terdapat video untuk mempelajari kode bahasa pemrograman Java dan Python. Situs gratis ini dapat anda jadikan referensi untuk mengembangkan skill pemrograman. Di situ anda dapat mengetikkan kode secara online melalui editor teks kemudian tinggal klik Run untuk mengkompilasi kode secara online.

6. Repl.it

Repl.it  menyediakan lingkungan online untuk mempelajari berbagai bahasa pemrograman dan juga memiliki editor kode online. Selain itu, situs ini memiliki mesin penerjemah yang ditulis dalam bahasa Java Script untuk lebih dari 15 bahasa pemrograman dan interpreter yang berjalan di komputer pengguna.

7. Ideone

Ideone merupakan alat untuk debugging dan juga compiler online yang dapat melakukan kompilasi serta mengeksekusi secara online untuk lebih dari 60 bahasa pemrograman. Beberapa bahasa pemrograman itu seperti Java, C #, C, Pascal, dan sebagainya. Di situs ini, anda perlu memilih bahasa pemrograman lalu mengetikkan kode pada editor teks. Untuk menjalankan program, anda tinggal menekan tombol Run. Mudah bukan?.

8. Codeschool

Codeschool akan mengajarkan berbagai teknologi web di browser web melalui gips layar, juga terdapat tantangan pengkodean dan pelajaran video untuk bahasa pemrograman dengan komunitas besar seperti Java Script, Ruby, HTML / CSS dan C.

9. WiBit.Net

WiBit.Net merupakan website tutorial berupa video yang menyediakan kursus pemrograman komputer secara gratis dalam bahasa pemrograman seperti C ++, C dan Obj-C dan juga Java. Yang menarik di sini adalah  tutorial tersebut menyediakan sumber daya untuk belajar bahasa pemrograman dengan cepat.

10. RailsForZombies.org

Bagi anda yang sedang belajar pemrograman Ruby, RailsForZombies.org ini bisa menjadi tempat belajar yang juga bisa anda pilih. Setelah update dilakukan pada situs ini  maka memungkinkan para pelajar untuk mempelajari Ruby on Rails secara langsung di browser tanpa pengaturan tambahan. Website interaktif ini juga memastikaan kesenangan dalam metode belajar karena tidak perlu khawatir tentang masalah konfigurasi. Disamping itu terdapat juga berbagai video tutorial dengan latihan sebagai sumber daya yang bagus untuk belajar.

11. CodeLearn

CodeLearn  menjadikan proses belajar Ruby on Rails dengan mudah. Yaitu dengan membuat aplikasi langsung di browser. Situs  ini menawarkan server virtual yang bebas dari kerumitan bersama dengan tutorial-tutorial luar biasa yang memudahkan untuk pembelajaran Rails. Pengguna tidak memerlukan profesional yang berpengalaman untuk menggunakan tutorial ini.

12. LearnPython

LearnPython merupakan tempat tutorial belajar Python interaktif secara gratis. Tutorial Python ini dikembangkan untuk menawarkan pola belajar interaktif kepada para orang yang ingin belajar pemrograman Python. Tutorial-tutoriaal ini berisi materi kursus dasar dan awal sehingga mampu untuk memfasilitasi pemula dan profesional yang berpengalaman dalam teknik pemrograman Python.

13. Pyschools

Pyschools merupakan website yang memiliki banyak sekali tutorial dasar Python dan juga latihan-latihan secara interaktif dengan tujuan untuk melatih keterampilan pemrograman Python anda.

14. Python Anywhere

Seasua dengan namanya, Python Anywhere  menyediakan lingkungan berbasis cloud bagi para pengembang Python untuk mengembangkan dan menyebarkan aplikasi Python melalui teknologi cloud.

15. Trypython.jcubic

Trypython.jcubic adalah interpreter online interaktif untuk bahasa program Python, dengan AJAX  dan menggunakan plug-in yang disebut JQuery Terminal Emulator. Seperti Java, Python juga merupakan bahasa pemrograman berorientasi objek yang dapat anda coba langsung melalui browser web.

16. Trypython.org

Trypython.org adalah interpreter interaktif untuk bahasa pemrograman Python langsung pada browser web. Di sini juga tersedia tutorial online untuk Python programming secara interaktif yang dapat anda jalankan di jendela browser.

17. Learn-C.org

Learn-C.org berisi tutorial pembelajaran C interaktif dan gratis untuk orang-orang yang ingin belajar pemrograman C. Website ini menawarkan pembelajaran untuk tingkat pemula dan lanjut mengenai pemrograman C. Dengan demikian terlepas apakah mereka pemula atau profesional tetap dapat belajar di sini. Di samping itu, belajar melalui situs web ini tidak akan membutuhkan apa pun untuk diunduh.

18. LearnJavaOnline

LearnJavaOnline adalah situs tutorial belajar Java interaktif gratis untuk semua kalangan. Tidak masalah apakah anda seorang profesional atau pemula di pemrograman Java. Tujuan dari dari situs web ini adalah untuk menawarkan pembelajaran kepada semua orang yang ingin belajar Java. Tutorial pada situs ini berisi tutorial tingkat dasar dan lanjutan. Jika anda memutuskan untuk belajar Java mungkin ada ingin mengetahui alasan lainnya kenapa mempelajari Java.

19. Try.jQuery

jQuery adalah salah satu kerangka kerja Javascript yang paling populer. Try.jQuery adalah situs web interaktif yang berisi kumpulan video, tantangan interaktif yang tersedia dalam bentuk konsol dan juga memungkinkan anda untuk mempraktikkan kode di browser anda sendiri. Anda hanya memerlukan waktu 3 jam untuk menyelesaikan seluruh aktivitas. Situs web saat ini menggunakan jQuery 2.0 untuk fungsinya.

20. SQLZoo

SQLZoo merupakan situs web yang menawarkan tutorial secara langkah demi langkah dengan penerjemah langsung. Anda dapat belajar SQL Server, Oracle, MySQL, DB2, dan PostgreSQL melalui pembelajaran interaktif ini. Website ini juga  berisi berbagai macam materi tutorial yang dirancang untuk pemula dan para profesional tingkat lanjut.

21. Try.Github.io

Try.Github.io memungkinkan Anda belajar Git dalam 15 menit. Situs interaktif ini memiliki jendela untuk memasukkan kode yang disematkan di peramban itu sendiri. Dengan demikian memungkinkan para pembelajar dan pengguna untuk mencoba kode mereka secara langsung di Octobox dan melihat hasilnya.

22. Coder Byte

Coder byte berisi tantangan pemrograman danjuga  kompetisi website. Situs ini juga menyediakan  forum diskusi program terkait untuk meminta solusi mengenai masalah pemrograman.

23. C++ Interactive Exercises

C++ Interactive Exercises berisi latihan-latihan yang memberikan pengantar bahasa Pemrograman C ++ beserta dengan contoh programnya. Dikarenakan ini berbasis web maka anda dapat menjalankan program dengan mengklik tombol "Start Exercise" di situs web itu sendiri.

24. CSS3 Please

CSS3 Please adalah alat berbasis web online  yang menghasilkan aturan lintas browser untuk bahasa CSS. Setiap kali anda membuat perubahan dalam aturan di sisi kiri halaman web, maka ada perubahan yang terjadi secara otomatis dalam elemen.

25. W3Schools

W3Schools adalah situs web informasi untuk pengembang web dan berisi berbagai referensi serta tutorial untuk CSS, HTML, JQuery, PHP, Java Script, dan SQL. Website ini mendapatkan namanya dari World Wide Web dan memiliki alat editor online.

26. Golang

Golang adalah situs tempat mempelajari bahasa Pemrograman Go. Anda dapat menulis kode  di editor kode online dan menjalankan program secara online. Anda juga dapat mengunduh kompiler Go dari situs ini.

Itulah beberapa situs tempat belajar pemrograman interaktif dari nol untuk pemula. Semoga bisa membantu anda yang sedang belajar koding.

Menambahkan Konten File Dengan FileWriter

java.io.FileWriter merupakan class yang memberikan kenyamanan dan membuat menjadi mungkin untuk menulis karakter pada suatu file.

FileWriter ini bekerja seperti FileOutputStream. Tapi perbedaannya adalah FileOutputStream berbasis byte, sedangkan FileWriter berbasis karakter. Secara sederhananya FileWriter ini dimaksudkan untuk menulis teks. Satu karakter mungkin saja sesuai dengan satu byte atau bisa lebih, tergantung pada skema pengkodean dari karakter yang digunakan.


Menambahkan Konten File Dengan FileWriter


Pada beberapa platform, khususnya, memungkinkan file dibuka untuk ditulis oleh hanya satu FileWriter (atau objek penulisan file lainnya) pada satu waktu. Dalam situasi tersebut, konstruktor di kelas ini akan gagal jika file yang terlibat sudah terbuka.

Menambahkan Konten (Append) VS Overwrite File

Ketika anda membuat objek FileWriter, anda dapat memutuskan apakah anda ingin meng-overwrite (menimpa) file yang ada dengan nama yang sama, atau apakah anda ingin menambahkan (append) ke file yang sudah ada. Anda memutuskan hal ini dengan cara memilih konstruktor FileWriter yang digunakan.

Konstruktor FileWriter berikut ini hanya mengambil satu parameter, nama file, dan akan menimpa file yang ada:

FileWriter(File file)

Sedangkan untuk menambahkan konten pada file yang sudah ada tanpa menimpanya anda dapat menggunakan konstruktor:

FileWriter(File file, boolean append)

Contoh:

Sebuah file dengan nama myfile.txt terdapat di path C:\\bahasajavacom\\.

Isi dari file tersebut seperti ini:




Kemudian file tersebut akan ditambahkan konten, dengan program seperti di bawah ini:

package com.bahasajava.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MenambahkanKontenFile {
    
    private static final String NAMA_FILE = 
            "C:\\bahasajavacom\\myfile.txt";
    
    public static void main(String[] args) {
        
            BufferedWriter bufferedWriter = null;
            FileWriter fileWriter = null;
            MenambahkanKontenFile.membacaFile();
            
        try {    
            String kontenFile = ":Belajar Bahasa Pemrograman Java Itu Menyenangkan!";
            
            File file = new File(NAMA_FILE);
            
            //Jika file tidak ada, maka file akan dibuat
            if(!file.exists()){
                file.createNewFile();
            }else{
                 System.out.println("File telah ada sebelumnya dan "
                         + "kontennya akan ditambah");
                 
            }
               
            //Contructor FileWriter yang akan menambahkan konnten file
            fileWriter = new FileWriter(file.getAbsoluteFile(), true);
            bufferedWriter = new BufferedWriter(fileWriter);
            
            bufferedWriter.write(kontenFile);
            System.out.println("Konten telah selesai ditambahkan");
        } catch (IOException ex) {
            ex.printStackTrace();
            
        }finally{
            try{
                if(bufferedWriter != null){
                    bufferedWriter.close();
                }
                if(fileWriter != null){
                    fileWriter.close();
                }
                
                MenambahkanKontenFile.membacaFile();
                
            }catch (IOException ex){
                ex.printStackTrace();
            }  
        }
    }
    
    
    //Method untuk membaca file
    static void membacaFile(){
        System.out.println("Sekarang konten myfile.txt adalah: ");
        try {
             
            BufferedReader bufferedReader = 
                    new BufferedReader(new FileReader(NAMA_FILE));
             
            String baris;
            //Ketika baris tidak null maka baris tersebut akan dicetak
            
            while((baris = bufferedReader.readLine()) != null){
                System.out.println(baris);
            }
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output:

Sekarang konten myfile.txt adalah:
abcde
fghij
klmno
pqrst
uvwxy
z
File telah ada sebelumnya dan kontennya akan ditambah
Konten telah selesai ditambahkan
Sekarang konten myfile.txt adalah:
abcde
fghij
klmno
pqrst
uvwxy
z:Belajar Bahasa Pemrograman Java Itu Menyenangkan!

Hasil setelah konten file ditambahkan


Kumpulan Shorcuts Pada IDE Netbeans Untuk Memudahkan Penulisan Koding Java

Hallo gan, bagi anda yang belajar Java atau memang menggunakan Netbeans untuk koding Java bisa menggunakan beberapa shortcut di bawah ini untuk mempercepat proses penulisan kodenya.



Oke deh, langsung saja. Berikut ini adalah tabel dari shortcuts untuk Netbeans 8 yang mungkin bisa membantu anda dalam belajar program Java.

Shortcuts Fungsi General
Ctrl+F3 Mencari kata pada insert point
F3/Shift+F3 Temukan file berikutnya / sebelumnya
Ctrl+F/H Menemukan/replace file
Alt+F7 Menemukan penggunaan
Ctrl+Shift+F/H Menemukan/replace dalam projects
Alt+Shift+U Menemukan hasil penggunaan
Alt+Shift+H Mematikan highlight hasil pencarian
Ctrl+R Rename
Ctrl+U, kemudian U Mengubah seleksi ke uppercase
Ctrl+U, kemudian L Mengubah seleksi ke lowercase
Ctrl+U, kemudian S Mengganti (toogle) kasus seleksi
Ctrl+Shift+V Paste diformat
Ctrl+Shift+D Menampilkan history clipboard
Ctrl+I Beralih ke field pencarian cepat
Alt+Shift+L Menyalin file path
Ctrl+O/Alt+Shift+O Menuju ke type/file
Ctrl+Shift+T Menuju ke JUnit test
Ctrl+Shift+B Menuju ke sumber (source)
Ctrl+B Menuju ke deklarasi
Ctrl+G Menuju ke baris
Ctrl+Shift+M Alihkan tambah/hapus bookmark
Ctrl+Shift+./, Bookmark berikutnya/sebelumnya
Ctrl+./, Penggunaan berikutnya/sebelumnya/compile error
Alt+Shift+./, Memilih element berikutnya/selanjutnya
Ctrl+Shift+1/2/3 Memilih dalam Projects/Files/Favorites
Ctrl+[ Memindahkan tanda sisipan ke braket yang cocok
Ctrl+K/Ctrl+Shift+K Kecocokan kata selanjutnya/berikutnya
Alt+Left Arrow/Alt+Right Arrow/Ctrl+Q Menuju backward/forward ke editan terakhir
Alt+Up Arrow/Down Arrow Menandai kejadian berikutnya/sebelumnya

Shortcuts Fungsi Coding
Alt+Insert Meng-generate kode
Ctrl+Shift+I Perbaiki semua import class
Alt+Shift+I Perbaiki import class yang dipilih
Alt+Shift+F Pilihan format (Indent)
Alt+Shift+Arrow Keys Geser garis ke kiri / kanan / atas / bawah
Ctrl+Shift+R Seleksi Rectangular (Toggle)
Ctrl+Shift+Arrow Up/Arrow Down Salin garis atas / bawah
Ctrl/Alt+F12 Periksa anggota / hierarki
Ctrl+Shift+C/Ctrl+/ Tambahkan / hapus baris komentar
Ctrl+Shift+C/Ctrl+/ Hapus baris saat ini

Ketik Shortcuts
lalu tekan Tab
Editor Kode Java
psvm public static void main
En Enumeration
Ex Exception
Psf public static final
Psfb public static final boolean
Psfi public static final int
Psfs public static final String
St String
ab abstract
as assert true
br break
bo boolean
ca catch
cl class
cn continue
db double
df default
eq equal
ex extends
pu public
pr private
pe protected
th throws
fy finally
im implements
ie interface
tw throw
ir import
le length
sout System.out.println()
soutv System.out.println("obj"+obj)
wh while
vo volatile
iof instanceof
fi final
fl float
fa false
sh short
psf private static final
psfb private static final boolean
psfi private static final int
psfs private static final String
pst printStackTrace()
bcom /**/

Shortcuts Compiling, Testing, Running
F9 Compile package/ file
F11 Build main project
Shift+F11 Membersihkan dan build main project
Ctrl+Q Set permintaan parameter
Ctrl+Shift+U Membuat Unit test
Ctrl+F6/Alt+F6 Run Unit test pada file/project
F6/Shift+F6 Run main project/file

Sumber selengkapnya di:
Netbeans user guide

Menggunakan Class File Untuk Mengatur File Permission (Hak Akses)

Apa itu file permission?


File permission itu merupakan aturan hak akses yang ditujukan bagi pengguna terhadap suatu file, apakah dapat untuk menjalankan (memperlakukan), membaca, atau menulis pada file tersebut. Dalam hal perlindungan dan keamanan data, maka ini menjadi hal yang sangat penting sehingga hanya user yang memiliki otoritas saja yang diberikan akses.


mengatur akses file pada Java


Method Pada Class File Untuk Mengatur Hak Akses

Berikut ini adalah method penting pada class java.io.File untuk mengatur file permission:

Method Penjelasan
boolean setExecutable(boolean executable) Method ini menetapkan izin untuk menjalankan
file/direktori hanya untuk pemilik saja
boolean setExecutable(boolean executable, boolean ownerOnly) Method ini menetapkan izin untuk menjalankan
file/direktori untuk pemilik atau siapa saja.
Ini tergantung dari argumen kedua.
Jika true maka hak menjalankan hanya untuk pemilik saja dan jika false maka eksekusi pada file bisa dilakukan oleh siapa saja. 
boolean setReadable(boolean readable) Method ini menetapkan izin untuk membaca
file/direktori hanya untuk pemilik saja
boolean setReadable(boolean readable, boolean ownerOnly) Method ini menetapkan izin untuk membaca
file/direktori oleh pemilik atau siapa saja.
Ini tergantung dari argumen kedua.
Jika true maka hak membaca hanya untuk pemilik saja dan jika false maka membaca file bisa dilakukan oleh siapa saja
boolean setWritable(boolean writable) Method ini menetapkan izin untuk menulis
file/direktori hanya untuk pemilik saja
boolean setWritable(boolean writable, boolean ownerOnly) Method ini menetapkan izin untuk menulis
file/direktori untuk pemilik atau siapa saja.
Ini tergantung dari argumen kedua.
Jika true maka hak menulis hanya untuk pemilik saja dan jika false maka menulis pada file bisa dilakukan oleh siapa saja.


Untuk mempermudah, tabel berikut ini akan membantu anda untuk memahaminya:

Hak Akses / Izin Pemilik File Pemilik File / Siapa Saja
Menjalankan setExecutable(boolean executable) setExecutable(boolean executable, boolean ownerOnly)
Membaca setReadable(boolean readable) setReadable(boolean readable, boolean ownerOnly)
Menulis setWritable(boolean writable) setWritable(boolean writable, boolean ownerOnly)

Contoh program mengatur hak akses menjalankan file


package com.bahasajava.io;

import java.io.File;

public class MenjalankanFile {
    public static void main(String[] args)
    {
        File file = new File("C:\\bahasajavacom\\myfile.txt");
         
        if(file.exists())
        {
            //Mengatur agar file hanya dapat dijalankan oleh pemilik saja
            boolean hasil = file.setExecutable(true);
             
            System.out.println("Apakah izin menjalankan file untuk "
                    + "pemilik berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
         
        if(file.exists())
        {
            //Mengatur agar file dapat dijalankan oleh siapa saja
            boolean hasil = file.setExecutable(true, false);
             
            System.out.println("Apakah izin menjalankan file untuk "
                    + "siapa saja berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
    }
}

Output:
Apakah izin menjalankan file untuk pemilik berhasil? true
Apakah izin menjalankan file untuk siapa saja berhasil? true

Contoh program mengatur hak akses membaca file


package com.bahasajava.io;

import java.io.File;

public class Membaca_File {
    public static void main(String[] args)
    {
        File file = new File("C:\\bahasajavacom\\myfile.txt");
         
        if(file.exists())
        {
            //Mengatur agar file hanya dapat dibaca oleh pemilik saja
            boolean hasil = file.setReadable(true);
             
            System.out.println("Apakah izin membaca file untuk "
                    + "pemilik berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
         
        if(file.exists())
        {
            //Mengatur agar file dapat dibaca oleh siapa saja
            boolean hasil = file.setReadable(true, false);
             
            System.out.println("Apakah izin membaca file untuk "
                    + "siapa saja berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
    }
}

Output:
Apakah izin membaca file untuk pemilik berhasil? true
Apakah izin membaca file untuk siapa saja berhasil? true

Contoh program mengatur hak akses menulis file


package com.bahasajava.io;

import java.io.File;

public class MenulisFile {
    public static void main(String[] args)
    {
        File file = new File("C:\\bahasajavacom\\myfile.txt");
         
        if(file.exists())
        {
            //Mengatur agar penulisan pada file dapat dilakukan oleh pemilik saja
            boolean hasil = file.setWritable(true);
             
            System.out.println("Apakah izin menulis file untuk "
                    + "pemilik berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
         
        if(file.exists())
        {
            //Mengatur agar file dapat ditulis oleh siapa saja
            boolean hasil = file.setWritable(true, false);
             
            System.out.println("Apakah izin menulis file untuk "
                    + "siapa saja berhasil? " + hasil);
        }
        else
        {
            System.out.println("File tidak ada!");
        }
    }
}

Output:
Apakah izin menulis file untuk pemilik berhasil? true Apakah izin menulis file untuk siapa saja berhasil? true

Demikianlah cara sederhana mengatur atau setting file permission pada file dengan program Java. Anda juga dapat mencobanya pada IDE Java seperti Netbeans atau Eclipse dengan mudah.

Membaca File Menggunakan BufferedReader Dalam Program Java

Pada kesempatan ini kita akan membahas contoh yang lebih kompleks tentang penggunaan class BufferedReader. Pada contoh sebelumnya, anda telah menggunakan InputStreamReader sebagai argumen konstruktor, sedangkan kali ini anda akan menggunakan FileReader. Tujuannya adalah untuk membaca isi file dan menampilkannya ke konsol.

Meskipun anda bisa saja memakai class Scanner untuk membaca file, namun menggunakan class BufferedReader memiliki beberapa manfaat. Ok, selanjutnya kita lihat contoh di bawah ini:

  1. Misalkan anda memiliki sebuah file.txt dengan nama myfile, yang berisi karakter seperti di bawah ini:
    membaca file java

    File tersebut terletak pada direktori tertentu. Pada contoh di sini tempat menyimpannya adalah C:/bahasajavacom/myfile.


  2. Berikut ini adalah contoh programnya:
    package com.bahasajava.io;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    
    public class MembacaFile {
        private static final String NAMA_FILE=("C:\\bahasajavacom\\myfile.txt");
        
        public static void main (String[] args){
            try {
                
                BufferedReader bufferedReader = new BufferedReader(new FileReader(NAMA_FILE));
                
                String baris;
                //Ketika baris tidak null maka baris tersebut akan dicetak
                while((baris = bufferedReader.readLine()) != null){
                    System.out.println(baris);
                }
                
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
Contoh output:

membaca file dengan BufferedReader

Cara Membuat File Path Pada Program Java

Apa itu path?

Path merupakan bentuk umum dari nama file atau direktori yang menentukan lokasi unik dalam sistem file. Sebuah path akan merujuk ke lokasi sistem file dengan mengikuti hierarki dari pohon direktori (directory tree).  Hirarki ini dinyatakan berupa string karakter di mana komponen path dipisahkan oleh karakter pembatas atau delimiter yang mewakili setiap direktori.

Delimiter yang paling sering digunakan adalah garis miring ("/"),  backslash ("\"), atau titik dua (":"). Meskipun beberapa sistem operasi mungkin menggunakan delimiter yang berbeda.

Path digunakan secara luas dalam ilmu komputer untuk mewakili hubungan direktori / file yang umum dalam sistem operasi modern. Path juga sangat penting dalam pembangunan Uniform Resource Locators (URLs). Path ini dapat diwakili dengan tipe absolut ataupun relatif.

Pada kesempatan kali ini akan dibahas mengenai 2 cara membuat file path, yaitu:
  • Dengan menggunakan File.separator atau System.getProperty("file.separator")
  • Dengan menggunakan File file = new File(direktoriKerja, namaFile);
Contoh 1:

package com.bahasajava.io;
 
import java.io.File;
import java.io.IOException;
 
public class ContohFilepath1 {
  
 public static void main(String[] args) {
   
  String namaFile = "filebaru.txt";
   
  //user.dir merupakan direktori kerja ketika proses dimulai
  String direktoriKerja = System.getProperty("user.dir");
   
  String filePathAbsolut = "";
   
  //Separator adalah karakter pemisah nama standar yang bergantung pada sistem, 
  //dan direpresentasikan sebagai string untuk kenyamanan.
  filePathAbsolut = direktoriKerja + File.separator + namaFile;
   
  System.out.println("Nama final dari file path adalah: " + filePathAbsolut);
   
  File file = new File(filePathAbsolut);
   
  try {
   if (file.createNewFile()) {
    System.out.println("File sudah dibuat!");
   } else {
    System.out.println("File sudah ada!");
   }
  } catch (IOException e) {
    
   e.printStackTrace();
  }
 } 
 
}

Contoh output:

file path Java


Contoh 2:

package com.bahasajava.io;

import java.io.File;
import java.io.IOException;

public class ContohFilepath2 {
 
public static void main(String[] args) {
  
  String namaFile = "filebaru.txt";
  
  //user.dir merupakan direktori kerja ketika proses dimulai
  String direktoriKerja = System.getProperty("user.dir");
  
  File file = new File (direktoriKerja, namaFile);
  
  //file.getAbsolutePath akan mengembalikan nama path absolut dalam string dari nama path abstrak
  System.out.println("Nama final dari file path adalah: " + file.getAbsolutePath());
  
  try {
   if (file.createNewFile()) {
    System.out.println("File sudah dibuat!");
   } else {
    System.out.println("File sudah ada!");
   }
  } catch (IOException e) {
   
   e.printStackTrace();
  }
 } 


}

Contoh 2 juga akan menghasilkan output yang serupa.

Cara Membuat File Pada Java

Untuk membuat file anda bisa menggunakan class java.io.File. Class File ini memiliki  4 constructor, yaitu:
  • File(File parent, String child)
  • File(String pathname)
  • File(String parent, String child)
  • File(URI uri)
Kali ini anda akan menggunakan constructor File(String pathname) yang akan digunakan untuk membuat file text dari string path file tersebut.

Method yang dipakai untuk memeriksa apakah file sudah dibuat adalah File.createNewFile() yang akan mengembalikan nilai boolean:
  • true jika file berhasil dibuat
  • false jika file sudah ada
Method ini akan membuat file kosong yang baru hanya jika nama file ini belum ada pada path direktori yang akan dijadikan tempat menyimpan file tersebut.  Selain itu, method ini juga melemparkan checked exception yaitu IOException.

Contoh:

package com.bahasajava.io;

import java.io.File;
import java.io.IOException;

public class MembuatFile 
{
    public static void main( String[] args )
    { 
     try {
       
           //Membuat file teks dengan nama filebaru yang berada di 
           //direktori C di dalam folder bahasajavacom
       File file = new File("C:\\bahasajavacom\\filebaru.txt");
       
       if (file.createNewFile()){
         System.out.println("File sudah dibuat!");
       }else{
         System.out.println("File sudah ada!.");
       }
       
     } catch (IOException e) {
       e.printStackTrace();
 }
    }
}

Contoh output:

membuat file dengan program java

Sebuah file dengan nama filebaru.txt sudah dibuat pada direktori C:\bahasajavacom.

Menyalin File Pada Java Menggunakan Class FileReader dan FileWriter

Pada pembahasan sebelumnya anda sudah mengetahui cara menyalin file menggunakan class FileInputStream dan FileOutputStream. Sekarang, kita akan melakukan hal yang sama dengan menggunakan class lainnya yaitu FileReader dan FileWriter.

FileReader inherit dari class InputStreamReader dan merupakan class yang "nyaman" untuk membaca file karakter. Constructor dari class ini mengasumsikan bahwa encoding character default  dan ukuran byte-buffer default adalah hal yang sesuai.

FileWriter inherit dari class OuputStreamReader dan merupakan class yang "nyaman" untuk menulis file karakter. Sama seperti pada FileReader, constructornya juga mengasumsikan  encoding character default  dan ukuran byte-buffer default adalah hal yang sesuai.

Mengenai apakah file tersedia atau dapat dibuat tergantung dari platform yang mendasarinya. Beberapa platform, secara khusus, mengizinkan sebuah file untuk dibuka dan ditulis oleh satu FileWriter ataupun objek lain yang mampu melakukannya pada sekali waktu. Dalam kasus seperti itu maka constructor class ini akan gagal jika file yang terkait sudah dibuka sebelumnya.

Berikut ini adalah contohnya:

Di sini misalkan terdapat sebuah file text pada direktori C:/bahasajavacom/myfile.txt dan isinya akan di salin ke C:/bahasajavacom/copymyfile.txt

package com.bahasajava.io;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MenyalinFile {
 
 public static void main(String[] args) {
  
  try {
   //myfile.txt adalah file sumber
   //FileReader melalui constructor-nya akan membuka file ini dalam mode pembacaan
   FileReader fileReader = new FileReader("C:/bahasajavacom/myfile.txt");
   
   //copymyfile.txt adalah file tujuan atau target
   //FileWriter melalui constructor-nya akan membuka file ini dalam mode penulisan
   FileWriter fileWriter = new FileWriter("C:/bahasajavacom/copymyfile.txt");
   
   int i;
   
   /*************************************************************************************
    * Method read() dari class FileInputStream akan membaca byte per byte dari file sumber.
    * Ini sebenarnya mudah dipahami, bahwa method ini akan membaca nilai byte
    * kemudian byte tersebut dikonversi pada nilai integer ASCII dan kemudian dikembalikan.
    * Contohnya, bila file tersebut berisi karakter A, maka akan diconvert menjadi 65
    * dan kemudian dikembalikan lagi.
    * 
    * Method ini akan mengembalikan nilai -1 ketika mencapai EOF / end of file.
    * 
    *************************************************************************************/
   while( ( i = fileReader.read()) != -1 ){
    /*****************************************************
     * Method write(int) dari class FileWriter akan 
     * mengambil nilai int dari method read()
     *****************************************************/
    fileWriter.write(i);
    System.out.print((char) i);
   }
   //Menutup stream dan sebagai good programming practice
   fileReader.close();
   fileWriter.close();
   
    //FileNotFoundException merupakan checked exception dari constructor FileReader dan FileWriter
  } catch (FileNotFoundException e) {
   System.out.println("File tidak ada! " + e);
  } //IOException merupakan checked exception method read(), method write(int c), dan method close()
    catch (IOException e) {
    System.out.println("Terdapat masalah ada I/O" + e);
  }
 } 

}


Contoh output:

menyalin file Java dengan FileReader dan FileWriter

Pada direktori yang sesuai akan terdapat salinan file text.

Menyalin File Pada Java Menggunakan Class FileInputStream dan FileOutputStream

Hallo gan, pada kesempatan kali ini kita akan melihat penggunaan class FileInputStream dan juga FileOutputStream untuk menyalin file.

Pada dasarnya, program ini terbagi dalam 5 langkah praktis yang mudah diikuti, yaitu:
  1. Menggunakan constructor FileInputStream untuk membuka sumber file dalam mode pembacaan.
  2. Membuka target file dalam mode penulisan menggunakan constructor FileOutputStream.
  3. Membaca isi file menggunakan method read().
  4. Menuliskan data pada file target / tujuan, menggunakan method write(int)
  5. Menutup streams menggunakan method close() ketika tugas telah selesai
Berikut ini adalah contohnya:

Di sini misalkan terdapat sebuah file text pada direktori C:/bahasajavacom/myfile.txt dan isinya akan di salin ke C:/bahasajavacom/copymyfile.txt

package com.bahasajava.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MenyalinFile {
 
 public static void main(String[] args) {
  
  try {
   //myfile.txt adalah file sumber
   //FileInputStream melalui constructor-nya akan membuka file ini dalam mode pembacaan
   FileInputStream fileInputStream = new FileInputStream("C:/bahasajavacom/myfile.txt");
   
   //copymyfile.txt adalah file tujuan atau target
   //FileOutputStream melalui constructor-nya akan membuka file ini dalam mode penulisan
   FileOutputStream fileOutputStream = new FileOutputStream("C:/bahasajavacom/copymyfile.txt");
   /************************************************************************
    * Bila file tujuan ini tidak ada maka file baru akan dibuat dan
    * isi dari file sumber, yaitu myfile.txt akan disalin.
    * Namun, bila file tujuan sudah ada, maka file tersebut akan di overriden
    * dan artinya file lama akan hilang.
    * 
    * Oleh karena itu, untuk mencegahnya bisa menggunakan append mode
    * dengan memodifikasi kode pada di atas menjadi:
    * FileOutputStream fileOutputStream = new FileOutputStream("C:/combahasajava/copymyfile.txt", true);
    ************************************************************************/
   
   int i;
   
   /*************************************************************************************
    * Method read() dari class FileInputStream akan membaca byte per byte dari file sumber.
    * Ini sebenarnya mudah dipahami, bahwa method ini akan membaca nilai byte
    * kemudian byte tersebut dikonversi pada nilai integer ASCII dan kemudian dikembalikan.
    * Contohnya, bila file tersebut berisi karakter A, maka akan diconvert menjadi 65
    * dan kemudian dikembalikan lagi.
    * 
    * Method ini akan mengembalikan nilai -1 ketika mencapai EOF / end of file.
    * 
    *************************************************************************************/
   while( ( i = fileInputStream.read()) != -1 ){
    /*****************************************************
     * Method write(int) dari class FileOutputStream akan 
     * mengambil nilai int dari method read()
     *****************************************************/
    fileOutputStream.write(i);
    System.out.print((char) i);
   }
   //Menutup stream dan sebagai good programming practice
   fileInputStream.close();
   fileOutputStream.close();
   
    //FileNotFoundException merupakan checked exception dari kedua constructor di atas
  } catch (FileNotFoundException e) {
   System.out.println("File tidak ada! " + e);
   
    //IOException merupakan checked exception dari method read() dan write().
  } catch (IOException e) {
   System.out.println("Terdapat masalah ada I/O" + e);
  }
 } 

}

Contoh output:

Menyalin file text Java

Pada direktori target akan terdapat salinan file dari file sumber.