Penanganan file adalah bagian penting dari aplikasi apa pun. Java memiliki beberapa metode untuk membuat, membaca, memperbarui, dan menghapus file.
Section Artikel
Kelas File dari paket java.io, memungkinkan kita untuk bekerja dengan file. Untuk menggunakan kelas File, buat objek dari kelas tersebut, dan tentukan nama file atau nama direktori. Contohnya adalah dengan kode berikut
import java.io.File; // Import the File class
File myObj = new File("filename.txt"); // Specify the filename
Kelas File memiliki banyak metode yang berguna untuk membuat dan mendapatkan informasi tentang file. Sebagai contohnya yaitu berada dalam tabel berikut
Method | Type | Description |
canRead () | Boolean | Menguji apakah file dapat dibaca atau tidak |
canWrite () | Boolean | Menguji apakah file dapat ditulis atau tidak |
createNewFile () | Boolean | Membuat file kosong |
delete () | Boolean | Menghapus file |
existing () | Boolean | Menguji apakah file tersebut ada |
getName () | String | Mengembalikan nama file |
getAbsolutePath () | String | Mengembalikan nama path absolut dari file |
length () | Long | Mengembalikan ukuran file dalam byte |
list () | String | Mengembalikan larik file dalam direktori |
mkdir () | Boolean | Membuat direktori |
Untuk membuat file di Java, Anda bisa menggunakan metode createNewFile (). Metode ini mengembalikan nilai boolean: true jika file berhasil dibuat, dan false jika file sudah ada. Perhatikan bahwa metode ini disertakan dalam blok coba … tangkap. Ini diperlukan karena ini melempar IOException jika terjadi kesalahan (jika file tidak dapat dibuat karena alasan tertentu) Contohnya adalah dengan menuliskan kode berikut
import java.io.File; // Import the File class import java.io.IOException; // Import the IOException class to handle errors public class CreateFile { public static void main(String[] args) { try { File myObj = new File("filename.txt"); if (myObj.createNewFile()) { System.out.println("File created: " + myObj.getName()); } else { System.out.println("File already exists."); } } catch (IOException e) { System.out.println("An error occurred."); e.printStackTrace(); } } } // Output yang akan dihasilkan yaitu : File created: filename.txt
Untuk membuat file dalam direktori tertentu (memerlukan izin), tentukan jalur file dan gunakan garis miring terbalik ganda untuk keluar dari karakter “\” (untuk Windows). Di Mac dan Linux Anda bisa menulis path, seperti: /Users/name/filename.txt. contohnya untuk membuat file bisa dilakukan dengan kode berikut
File myObj = new File("C:\\Users\\MyName\\filename.txt");
Dalam contoh berikut, kami menggunakan kelas FileWriter bersama dengan metode write () untuk menulis beberapa teks ke file yang kami buat pada contoh di atas. Perhatikan bahwa ketika Anda selesai menulis ke file, Anda harus menutupnya dengan metode close (). Contoh sederhananya bisa kita lihat dengan menuliskan kode berikut
import java.io.FileWriter; // Import the FileWriter class import java.io.IOException; // Import the IOException class to handle errors public class WriteToFile { public static void main(String[] args) { try { FileWriter myWriter = new FileWriter("filename.txt"); myWriter.write("Files in Java might be tricky, but it is fun enough!"); myWriter.close(); System.out.println("Successfully wrote to the file."); } catch (IOException e) { System.out.println("An error occurred."); e.printStackTrace(); } } } // Output yang dihasilkan adalah : Successfully wrote to the file.
Pada contoh berikut, kami menggunakan kelas Scanner untuk membaca konten file teks. Contoh agar kita dapat membaca file yaitu
import java.io.File; // Import the File class import java.io.FileNotFoundException; // Import this class to handle errors import java.util.Scanner; // Import the Scanner class to read text files public class ReadFile { public static void main(String[] args) { try { File myObj = new File("filename.txt"); Scanner myReader = new Scanner(myObj); while (myReader.hasNextLine()) { String data = myReader.nextLine(); System.out.println(data); } myReader.close(); } catch (FileNotFoundException e) { System.out.println("An error occurred."); e.printStackTrace(); } } } // Maka akan menghasilkan output berikut : Files in Java might be tricky, but it is fun enough!
Untuk mendapatkan informasi selengkapnya tentang file, gunakan salah satu metode File. Contoh kode untuk mendapatkan informasi file yaitu
import java.io.File; // Import the File class public class GetFileInfo { public static void main(String[] args) { File myObj = new File("filename.txt"); if (myObj.exists()) { System.out.println("File name: " + myObj.getName()); System.out.println("Absolute path: " + myObj.getAbsolutePath()); System.out.println("Writeable: " + myObj.canWrite()); System.out.println("Readable " + myObj.canRead()); System.out.println("File size in bytes " + myObj.length()); } else { System.out.println("The file does not exist."); } } }
Output dari file diatas yaitu
File name: filename.txt
Absolute path: C:\Users\MyName\filename.txt
Writeable: true
Readable: true
File size in bytes: 0
Catatan: Ada banyak kelas yang tersedia di Java API yang dapat digunakan untuk membaca dan menulis file di Java: FileReader, BufferedReader, Files, Scanner, FileInputStream, FileWriter, BufferedWriter, FileOutputStream, dll. Yang mana yang akan digunakan bergantung pada versi Java Anda sedang mengerjakan dan apakah Anda perlu membaca byte atau karakter, dan ukuran file / baris dan lainnya.
Untuk menghapus file di Java, gunakan metode delete () yang dapat kita buat dengan kode berikut
import java.io.File; // Import the File class public class DeleteFile { public static void main(String[] args) { File myObj = new File("filename.txt"); if (myObj.delete()) { System.out.println("Deleted the file: " + myObj.getName()); } else { System.out.println("Failed to delete the file."); } } } // output pada kode berikut adalah : Deleted the file: filename.txt
Anda juga dapat menghapus folder. Namun, harus kosong terlebih dahulu untuk folder yang akan dihapus. Contoh kode untuk menghapus folder yaitu
import java.io.File; public class DeleteFolder { public static void main(String[] args) { File myObj = new File("C:\\Users\\MyName\\Test"); if (myObj.delete()) { System.out.println("Deleted the folder: " + myObj.getName()); } else { System.out.println("Failed to delete the folder."); } } } // output yang dihasilkan yaitu : Deleted the folder: Test
Java I / O (Input dan Output) digunakan untuk memproses input dan menghasilkan output. Java menggunakan konsep aliran untuk mempercepat operasi I / O. Paket java.io berisi semua kelas yang diperlukan untuk operasi input dan output. Kami dapat melakukan penanganan file di Java dengan Java I / O API.
Paket java.io berisi hampir setiap kelas yang mungkin Anda perlukan untuk melakukan input dan output (I / O) di Java. Semua aliran ini mewakili sumber masukan dan tujuan keluaran. Aliran dalam paket java.io mendukung banyak data seperti primitif, objek, karakter lokal.
Stream adalah urutan data. Di Java, aliran terdiri dari byte. Disebut aliran karena ibarat aliran air yang terus mengalir. Di Java, 3 stream dibuat untuk kita secara otomatis. Semua aliran ini terpasang dengan konsol.
Mari kita lihat kode untuk mencetak keluaran dan pesan kesalahan ke konsol.
System.out.println("simple message");
System.err.println("error message");
Mari kita lihat kode untuk mendapatkan masukan dari konsol.
int i=System.in.read();//returns ASCII code of 1st character
System.out.println((char)i);//will print the character
Stream dapat didefinisikan sebagai urutan data. Ada dua jenis stream yaitu
Java menyediakan dukungan yang kuat namun fleksibel untuk I / O yang terkait dengan file dan jaringan, tetapi tutorial ini mencakup fungsionalitas yang sangat mendasar yang terkait dengan aliran dan I / O. Kita akan melihat contoh yang paling umum digunakan satu per satu.
Penjelasan kelas OutputStream dan InputStream diberikan di bawah ini:
Aplikasi Java menggunakan aliran keluaran untuk menulis data ke tujuan; itu bisa berupa file, array, perangkat periferal atau soket.
Aplikasi Java menggunakan aliran input untuk membaca data dari sumber; itu bisa berupa file, array, perangkat periferal atau soket.
Kelas OutputStream adalah kelas abstrak. Ini adalah superclass dari semua kelas yang mewakili aliran keluaran byte. Aliran keluaran menerima byte keluaran dan mengirimkannya ke beberapa sink. Metode yang berguna dari OutputStream yaitu
Kelas InputStream adalah kelas abstrak. Ini adalah superclass dari semua kelas yang mewakili aliran input byte. Metode yang berguna dari InputStream yaitu
Stream byte Java digunakan untuk melakukan input dan output byte 8-bit. Meskipun ada banyak kelas yang terkait dengan aliran byte tetapi kelas yang paling sering digunakan adalah, FileInputStream dan FileOutputStream. Berikut adalah contoh yang menggunakan kedua kelas ini untuk menyalin file input ke file output. Dapat kita lihat pada kode berikut
import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("input.txt"); out = new FileOutputStream("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
Sekarang mari kita memiliki file input.txt dengan isi konten berikut
This is test for copy file.
Sebagai langkah selanjutnya, kompilasi program di atas dan jalankan, yang akan menghasilkan file output.txt dengan konten yang sama seperti yang kita miliki di input.txt. Jadi mari kita letakkan kode di atas dalam file CopyFile.java dan lakukan hal berikut
$javac CopyFile.java
$java CopyFile
Stream Java Byte digunakan untuk melakukan input dan output byte 8-bit, sedangkan stream Karakter Java digunakan untuk melakukan input dan output untuk unicode 16-bit. Meskipun ada banyak kelas yang terkait dengan aliran karakter tetapi kelas yang paling sering digunakan adalah, FileReader dan FileWriter. Meskipun secara internal FileReader menggunakan FileInputStream dan FileWriter menggunakan FileOutputStream tetapi di sini perbedaan utamanya adalah FileReader membaca dua byte sekaligus dan FileWriter menulis dua byte sekaligus.
Kita dapat menulis ulang contoh ini, yang menggunakan kedua kelas ini untuk menyalin file input (memiliki karakter unicode) ke file output
import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
Sekarang mari kita memiliki file input.txt dengan konten berikut
This is test for copy file.
Sebagai langkah selanjutnya, kompilasi program di atas dan jalankan, yang akan menghasilkan file output.txt dengan konten yang sama seperti yang kita miliki di input.txt. Jadi mari kita letakkan kode di atas dalam file CopyFile.java dan lakukan hal berikut
$javac CopyFile.java
$java CopyFile
Semua bahasa pemrograman menyediakan dukungan untuk I / O standar di mana program pengguna dapat mengambil input dari keyboard dan kemudian menghasilkan output di layar komputer. Jika Anda mengetahui bahasa pemrograman C atau C ++, maka Anda harus mengetahui tiga perangkat standar STDIN, STDOUT dan STDERR. Demikian pula, Java menyediakan tiga aliran standar berikut
Berikut ini adalah program sederhana, yang membuat InputStreamReader untuk membaca aliran input standar sampai pengguna mengetik “q”
import java.io.*; public class ReadConsole { public static void main(String args[]) throws IOException { InputStreamReader cin = null; try { cin = new InputStreamReader(System.in); System.out.println("Enter characters, 'q' to quit."); char c; do { c = (char) cin.read(); System.out.print(c); } while(c != 'q'); }finally { if (cin != null) { cin.close(); } } } }
Mari simpan kode di atas dalam file ReadConsole.java dan coba kompilasi dan jalankan seperti yang ditunjukkan pada program berikut. Program ini terus membaca dan mengeluarkan karakter yang sama sampai kita menekan ‘q’ yaitu akan menghasilkan hasil berikut
$javac ReadConsole.java
$java ReadConsole
Enter characters, 'q' to quit.
1
1
e
e
q
q
Direktori adalah File yang dapat berisi daftar file dan direktori lain. Anda menggunakan objek File untuk membuat direktori, untuk membuat daftar file yang tersedia dalam direktori. Untuk detail lengkapnya, periksa daftar semua metode yang dapat Anda panggil pada objek File dan apa yang terkait dengan direktori.
Ada dua metode utilitas File yang berguna, yang dapat digunakan untuk membuat direktori
Contoh berikut membuat direktori “/ tmp / user / java / bin”
import java.io.File; public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // Create directory now. d.mkdirs(); } }
Kompilasi dan jalankan kode di atas untuk membuat “/ tmp / user / java / bin”.
Catatan – Java secara otomatis menangani pemisah jalur pada UNIX dan Windows sesuai konvensi. Jika Anda menggunakan garis miring (/) pada Java versi Windows, jalur akan tetap terselesaikan dengan benar.
Anda dapat menggunakan metode list () yang disediakan oleh objek File untuk membuat daftar semua file dan direktori yang tersedia dalam direktori sebagai berikut
import java.io.File; public class ReadDir { public static void main(String[] args) { File file = null; String[] paths; try { // create new file object file = new File("/tmp"); // array of files and directory paths = file.list(); // for each name in the path array for(String path:paths) { // prints filename and directory name System.out.println(path); } } catch (Exception e) { // if any error occurs e.printStackTrace(); } } }
Ini akan menghasilkan hasil berikut berdasarkan direktori dan file yang tersedia di direktori / tmp Anda
test1.txt
test2.txt
ReadDir.java
ReadDir.class
Java FileOutputStream adalah aliran keluaran yang digunakan untuk menulis data ke file. Jika Anda harus menulis nilai primitif ke dalam file, gunakan kelas FileOutputStream.
Anda dapat menulis data berorientasi byte serta berorientasi karakter melalui kelas FileOutputStream. Tapi, untuk data berorientasi karakter, lebih disukai menggunakan FileWriter daripada FileOutputStream.
Mari kita lihat deklarasi untuk kelas Java.io.FileOutputStream
public class FileOutputStream extends OutputStream
Contoh Menulis Byte FileOutputStream pada Java
import java.io.FileOutputStream; public class FileOutputStreamExample { public static void main(String args[]){ try{ FileOutputStream fout=new FileOutputStream("D:\\tesout.txt"); fout.write(65); fout.close(); System.out.println("success..."); }catch(Exception e){System.out.println(e);} } } // Maka akan menghasilkan output : Success...
Konten file teks testout.txt diatur dengan data A. Isi dari file testout.txt yaitu A.
Contoh Menulis String FileOutputStream pada Java
import java.io.FileOutputStream; public class FileOutputStreamExample { public static void main(String args[]){ try{ FileOutputStream fout=new FileOutputStream("D:\\testout.txt"); String s="Java IO and File Handling."; byte b[]=s.getBytes();//converting string into byte array fout.write(b); fout.close(); System.out.println("success..."); }catch(Exception e){System.out.println(e);} } } // Output yang muncul adalah : Success...
Konten dari file teks testout.txt diatur dengan data Java IO and File Handling. Isi dari file testout.txt yaitu Java IO and File Handling.
Kelas FileInputStream Java memperoleh byte input dari file. Ini digunakan untuk membaca data berorientasi byte (aliran byte mentah) seperti data gambar, audio, video dan lainnya. Anda juga dapat membaca data aliran karakter. Namun, untuk membaca aliran karakter, disarankan untuk menggunakan kelas FileReader.
Mari kita lihat deklarasi untuk kelas java.io.FileInputStream yaitu
public class FileInputStream extends InputStream
Contoh membaca karakter tunggal FileInputStream pada Java
import java.io.FileInputStream; public class DataStreamExample { public static void main(String args[]){ try{ FileInputStream fin=new FileInputStream("D:\\testout.txt"); int i=fin.read(); System.out.print((char)i); fin.close(); }catch(Exception e){System.out.println(e);} } }
Catatan: Sebelum menjalankan kode, file teks dengan nama “testout.txt” harus dibuat. Dalam file ini, kami memiliki konten berikut Java IO and File Handling. Setelah menjalankan program di atas, Anda akan mendapatkan satu karakter dari file tersebut Untuk melihat teks, Anda perlu mengubahnya menjadi karakter. Outputnya adalah W
Contoh membaca seluruh karakter FileInputStream pada Java
import java.io.FileInputStream; public class DataStreamExample { public static void main(String args[]){ try{ FileInputStream fin=new FileInputStream("D:\\testout.txt"); int i=0; while((i=fin.read())!=-1){ System.out.print((char)i); } fin.close(); }catch(Exception e){System.out.println(e);} } } // outputnya adalah Java IO and File Handling