Tuesday, 16 February 2016

File dan I/O Pada Java - Files and I/O - Java NetBeans

Java.io package mengandung hampir setiap kelas diperlukan untuk melakukan input dan output (I/O) pada pemrograman Java. Semua itu merupakan sumber masukan dan tujuan output. Aliran dalam paket java.io mendukung banyak data primitif object, karakter lokal, dll

Stream

Stream dapat didefinisikan sebagai urutan data, terdapat dua jeis streaming.

  • InputStream : digunakan untuk membaca data dari source.
  • OutputStream : digunakan untuk menulis data ke tujuan.

Sumber : http://www.tutorialspoint.com/java/java_files_io.htm
Java menyediakan dukungan yang kuat namun fleksibel untuk mendukung I/O terkait dengan File dan jaringan tapi artikel ini meliputi fungsi yang sangat dasar yang berhubungan dengan stream dan I / O. Kita akan lihat contoh umum yang sering digunakan satu per satu:

Byte Streams

Java byte stream yang digunakan untuk melakukan input dan output dari 8-bit byte. Meskipun ada banyak kelas yang berhubungan dengan byte stream tetapi kelas yang paling sering digunakan adalah, FileInputStream dan FileOutputStream . Berikut adalah contoh yang menggunakan dua kelas ini untuk menyalin file input ke dalam output file:
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();
         }
      }
   }
}
Lalu buatlah file bernama input.txt lalu tuliskan kata dibawah ini.

Ini adalah test untuk copy file.
Sebagai langkah berikutnya, mengkompilasi program di atas dan jalankan, yang akan menghasilkan dalam menciptakan output.txt file dengan isi yang sama seperti yang kita miliki di input.txt. Jadi mari kita menempatkan kode di atas dalam file CopyFile.java dan lakukan hal berikut:

$javac CopyFile.java
$java CopyFile

Karakter Streams

Java Byte stream yang digunakan untuk melakukan input dan output dari 8-bit byte, di mana Java Character stream yang digunakan untuk melakukan input dan output untuk 16-bit unicode. Meskipun ada banyak kelas yang berhubungan dengan karakter stream tetapi paling sering digunakan kelas adalah, FileReader dan FileWriter. Meskipun internal FileReader menggunakan FileInputStream dan FileWriter menggunakan FileOutputStream tapi perbedaan di sini utama adalah bahwa FileReader membaca dua byte pada satu waktu dan FileWriter menulis dua byte pada satu waktu.
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();
         }
      }
   }
}
Lalu buatlah file bernama input.txt lalu tuliskan kata dibawah ini.

Ini adalah test untuk copy file.
Sebagai langkah berikutnya, mengkompilasi program di atas dan jalankan, yang akan menghasilkan dalam menciptakan output.txt file dengan isi yang sama seperti yang kita miliki di input.txt. Jadi mari kita menempatkan kode di atas dalam file CopyFile.java dan lakukan hal berikut:
$javac CopyFile.java
$java CopyFile

Standar Streaming

Semua bahasa pemrograman menyediakan dukungan untuk standar I / O di mana program pengguna dapat mengambil input dari keyboard dan kemudian menghasilkan output pada layar komputer. Jika kita menggunakan bahasa pemrograman C atau C ++ , maka kita harus menyadari tiga perangkat standar STDIN, stdout dan stderr. cara yang sama Java menyediakan  tiga aliran standar berikut.

  • Standard Input: ini digunakan untuk memberi makan data ke program pengguna dan biasanya keyboard digunakan sebagai masukan standar dan direpresentasikan sebagai System.in.
  • Standard Output: ini digunakan untuk output data yang dihasilkan oleh program pengguna dan biasanya layar komputer digunakan untuk standar keluaran dan direpresentasikan sebagai System.out.
  • Standard Error: ini digunakan untuk output data error yang dihasilkan oleh program pengguna dan biasanya layar komputer digunakan untuk stream kesalahan standar dan direpresentasikan sebagai System.err.

Berikut ini adalah program sederhana yang menciptakan InputStreamReader untuk membaca masukan standar sampai pengguna menekan "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("Masukan karakter, 'q' untuk berhenti.");
         char c;
         do {
            c = (char) cin.read();
            System.out.print(c);
         } while(c != 'q');
      }finally {
         if (cin != null) {
            cin.close();
         }
      }
   }
}
Kita simpan kode di atas dalam file ReadConsole.java dan mencoba untuk mengkompilasi dan mengeksekusi sebagai berikut. Program ini terus membaca inputan dan keluaran karakter yang sama sampai kita input karakter 'q':
Masukkan karakter, 'q' untuk berhenti.
1
1
e
e
q
q

Membaca dan Menulis File

Seperti yang dijelaskan sebelumnya, stream dapat didefinisikan sebagai urutan data. InputStream digunakan untuk membaca data dari sumber dan OutputStream digunakan untuk menulis data ke tujuan.
Berikut adalah hirarki kelas untuk menangani Input dan Output stream.

Dua aliran penting adalah FileInputStream dan FileOutputStream , yang akan dibahas dalam tutorial ini:

FileInputStream

Aliran ini digunakan untuk membaca data dari file. Benda dapat dibuat dengan menggunakan kata kunci baru dan ada beberapa jenis konstruktor yang tersedia.
Berikut konstruktor mengambil nama file sebagai string untuk membuat obyek input stream untuk membaca file :
InputStream f = new FileInputStream("C:/java/hello");
Berikut konstruktor mengambil file objek untuk membuat sebuah objek input stream untuk membaca file. Pertama kita membuat objek file menggunakan File() method sebagai berikut:
File f = new File("C:/java/hello");
InputStream f = new FileInputStream(f);
Setelah kita memiliki InputStream objek, maka ada daftar metode pembantu yang dapat digunakan untuk membaca streaming atau melakukan operasi lain pada stream.
NoMetode dengan Deskripsi
1public void close() throws IOException{}
Metode ini menutup stream file output. Melepaskan sumber daya sistem yang berhubungan dengan file tersebut. Melempar IOException.
2protected void finalize() throws IOException{}
Metode ini membersihkan koneksi ke file. Memastikan bahwa metode menutup stream file output yang disebut ketika tidak ada lagi referensi untuk aliran ini. Melempar IOException.
3public int read(int r) throws IOException{}
Metode ini membaca byte tertentu dari data dari InputStream.Mengembalikan sebuah int. Mengembalikan byte berikutnya data dan -1 akan dikembalikan jika itu akhir file.
4public int read (byte [] r) throws IOException {}
Metode ini membaca byte r.length dari masukan ke dalam sebuah array. Mengembalikan jumlah byte yang dibaca. Jika akhir file -1 akan dikembalikan.
5public int available() throws IOException {}
Memberikan jumlah byte yang dapat dibaca dari aliran input file ini.Mengembalikan sebuah int.

FileOutputStream

FileOutputStream digunakan untuk membuat file dan menulis data ke dalamnya. stream akan menciptakan sebuah file, jika tidak tersedia, sebelum membukanya untuk output.
Berikut adalah dua konstruktor yang dapat digunakan untuk membuat objek FileOutputStream.
Berikut konstruktor mengambil nama file sebagai string untuk membuat obyek input stream untuk menulis file:
OutputStream f = new FileOutputStream("C:/java/hello") 
Berikut konstruktor mengambil file objek untuk membuat obyek output stream untuk menulis file. Pertama, kita membuat objek file menggunakan File() method sebagai berikut:
File f = new File("C:/java/hello");

OutputStream f = new FileOutputStream(f);

Setelah kita memiliki OutputStream objek di tangan, maka ada daftar metode pembantu, yang dapat digunakan untuk menulis untuk streaming atau melakukan operasi lain pada stream.
NoMetode dengan Deskripsi
1public void close() throws IOException{}
Metode ini menutup stream file output. Melepaskan sumber daya sistem yang berhubungan dengan file tersebut. Melempar IOException
2protected void finalize() throws IOException{}
Metode ini membersihkan koneksi ke file. Memastikan bahwa metode penutupan stream file output yang disebut ketika tidak ada lagi referensi untuk aliran ini. Melempar IOException.
3public void write(int w) throws IOExceptio {}
Metode ini menulis byte tertentu ke aliran output.
4public void write(byte [] w)
Menulis w.length byte dari array byte yang disebutkan ke OutputStream.

Contoh :

Berikut adalah contoh untuk menunjukkan InputStream dan OutputStream.
import java.io.*;

public class fileStreamTest{

   public static void main(String args[]){
   
   try{
      byte bWrite [] = {11,21,3,40,5};
      OutputStream os = new FileOutputStream("test.txt");
      for(int x=0; x < bWrite.length ; x++){
         os.write( bWrite[x] ); // writes the bytes
      }
      os.close();
     
      InputStream is = new FileInputStream("test.txt");
      int size = is.available();

      for(int i=0; i< size; i++){
         System.out.print((char)is.read() + "  ");
      }
      is.close();
   }catch(IOException e){
      System.out.print("Exception");
   } 
   }
}
Kode di atas akan membuat file test.txt dan akan menulis angka yang diberikan dalam format biner. Sama akan menjadi output pada layar stdout.

Direktori Pada Java

Direktori adalah file yang dapat berisi daftar file dan direktori. Kita menggunakan file objek untuk membuat direktori, daftar ke file yang tersedia di direktori. Untuk detail lengkap memeriksa daftar semua metode yang dapat kita gunakan untuk memanggil objek File dan apa yang berhubungan dengan direktori.

Membuat Direktori

Ada dua File utility method, yang dapat digunakan untuk membuat direktori:
  • mkdir() method menciptakan sebuah direktori, kembali benar pada keberhasilan dan palsu pada kegagalan. Kegagalan menunjukkan bahwa jalur yang ditetapkan dalam objek File sudah ada, atau direktori tidak dapat dibuat karena seluruh jalan belum ada.
  • mkdirs() method menciptakan baik sebuah direktori dan semua parents direktori.
Berikut contoh menciptakan "/tmp/user/java/ bin" direktori:
import java.io.File;

public class CreateDir {
   public static void main(String args[]) {
      String dirname = "/tmp/user/java/bin";
      File d = new File(dirname);
      // Membuat directory.
      d.mkdirs();
  }
}
Catatan: Java secara otomatis menangani pemisah jalan di UNIX dan Windows per konvensi. Jika kita menggunakan garis miring (/) padaJava versi Windows , path masih akan menyelesaikan dengan benar.

Listing Direktori

Anda dapat menggunakan list() metode yang disediakan oleh file objek untuk menampilkan daftar semua file dan direktori yang tersedia dalam sebuah direktori sebagai berikut:
import java.io.File;

public class ReadDir {
   public static void main(String[] args) {
      
      File file = null;
      String[] paths;
            
      try{      
         // membuat file object baru
         file = new File("/tmp");
                                 
         // array dari files dan directory
         paths = file.list();
            
         // untuk setiap nama pada path array
         for(String path:paths)
         {
            // mencetak nama file dan nama directory 
            System.out.println(path);
         }
      }catch(Exception e){
         // jika terdapat error
         e.printStackTrace();
      }
   }
}
Ini akan menghasilkan hasil sebagai berikut berdasarkan pada direktori dan file yang tersedia pada /tmp direktori:
test1.txt
test2.txt
ReadDir.java
ReadDir.class

2 comments:

luvne.com ayeey.com cicicookies.com mbepp.com kumpulanrumusnya.comnya.com tipscantiknya.com