Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java - File dan I/O

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 input dan tujuan output. Aliran dalam paket java.io mendukung banyak data seperti primitif, objek, karakter lokal, dll.

Aliran

Aliran dapat didefinisikan sebagai urutan data. Ada dua jenis Aliran

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

Aliran Byte

Aliran 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 dua kelas ini untuk menyalin file input ke file output −

Contoh

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 buat 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

Aliran Karakter

Java Byte stream digunakan untuk melakukan input dan output byte 8-bit, sedangkan Java Karakter stream 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 Penulis File . 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 di atas, yang menggunakan kedua kelas ini untuk menyalin file input (memiliki karakter unicode) ke file output −

Contoh

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 buat 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

Aliran Standar

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 C atau C++ bahasa pemrograman, 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 hingga pengguna mengetik "q"

Contoh

Demo Langsung
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 kita 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'

$javac ReadConsole.java
$java ReadConsole
Enter characters, 'q' to quit.
1
1
e
e
q
q

Membaca dan Menulis File

Seperti dijelaskan sebelumnya, aliran dapat didefinisikan sebagai urutan data. InputStream digunakan untuk membaca data dari sumber dan OutputStream digunakan untuk menulis data ke tujuan.

Berikut adalah hierarki kelas untuk menangani aliran Input dan Output.

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

FileInputStream

Aliran ini digunakan untuk membaca data dari file. Objek dapat dibuat menggunakan kata kunci baru dan ada beberapa jenis konstruktor yang tersedia.

Konstruktor berikut mengambil nama file sebagai string untuk membuat objek aliran input untuk membaca file −

InputStream f = new FileInputStream("C:/java/hello");

Konstruktor berikut mengambil objek file untuk membuat objek aliran input untuk membaca file. Pertama kita buat objek file menggunakan metode File() sebagai berikut

File f = new File("C:/java/hello");
InputStream f = new FileInputStream(f);

Setelah Anda memiliki InputStream objek di tangan, lalu ada daftar metode pembantu yang dapat digunakan untuk membaca ke streaming atau untuk melakukan operasi lain di aliran.

No.Pr. Metode &Deskripsi
1

public void close() melempar IOException{}

Metode ini menutup aliran keluaran file. Melepaskan semua sumber daya sistem yang terkait dengan file. Melempar IOException.

2

protected void finalize()throws IOException {}

Metode ini membersihkan koneksi ke file. Memastikan bahwa metode tutup aliran keluaran file ini dipanggil saat tidak ada lagi referensi ke aliran ini. Melempar IOException.

3

public int read(int r)throws IOException{}

Metode ini membaca byte data yang ditentukan dari InputStream. Mengembalikan sebuah int. Mengembalikan byte data berikutnya dan -1 akan dikembalikan jika itu adalah akhir dari file.

4

public int read(byte[] r) melempar IOException{}

Metode ini membaca r.length byte dari aliran input ke dalam array. Mengembalikan jumlah total byte yang dibaca. Jika ini adalah akhir dari file, -1 akan dikembalikan.

5

public int available() melempar IOException{}

Memberikan jumlah byte yang dapat dibaca dari aliran input file ini. Mengembalikan sebuah int.

Ada input stream penting lainnya yang tersedia, untuk detail lebih lanjut Anda dapat merujuk ke tautan berikut −

FileOutputStream

FileOutputStream digunakan untuk membuat file dan menulis data ke dalamnya. Stream akan membuat file, jika belum ada, sebelum membukanya untuk output.

Berikut adalah dua konstruktor yang dapat digunakan untuk membuat objek FileOutputStream.

Konstruktor berikut mengambil nama file sebagai string untuk membuat objek aliran input untuk menulis file −

OutputStream f = new FileOutputStream("C:/java/hello") 

Konstruktor berikut mengambil objek file untuk membuat objek aliran output untuk menulis file. Pertama, kita membuat objek file menggunakan metode File() sebagai berikut −

File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);

Setelah Anda memiliki OutputStream objek di tangan, lalu ada daftar metode pembantu, yang dapat digunakan untuk menulis ke streaming atau untuk melakukan operasi lain di aliran.

No.Pr. Metode &Deskripsi
1

public void close() melempar IOException{}

Metode ini menutup aliran keluaran file. Melepaskan semua sumber daya sistem yang terkait dengan file. Melempar IOException.

2

protected void finalize()throws IOException {}

Metode ini membersihkan koneksi ke file. Memastikan bahwa metode tutup aliran keluaran file ini dipanggil saat tidak ada lagi referensi ke aliran ini. Melempar IOException.

3

public void write(int w)throws IOException{}

Metode ini menulis byte yang ditentukan ke aliran keluaran.

4

public void write(byte[] w)

Menulis byte w.length dari array byte yang disebutkan ke OutputStream.

Ada aliran keluaran penting lainnya yang tersedia, untuk lebih jelasnya Anda dapat merujuk ke tautan berikut −

Contoh

Berikut adalah contoh untuk mendemonstrasikan 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. Hal yang sama akan menjadi output pada layar stdout.

Navigasi File dan I/O

Ada beberapa kelas lain yang akan kita lalui untuk mengenal dasar-dasar Navigasi File dan I/O.

Direktori di Java

Direktori adalah File yang dapat berisi daftar file dan direktori lain. Anda menggunakan File objek untuk membuat direktori, untuk membuat daftar file yang tersedia di direktori. Untuk detail lengkap, periksa daftar semua metode yang dapat Anda panggil pada objek File dan apa yang terkait dengan direktori.

Membuat Direktori

Ada dua File useful yang berguna metode utilitas, yang dapat digunakan untuk membuat direktori

Contoh berikut membuat direktori "/tmp/user/java/bin" −

Contoh

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 diselesaikan dengan benar.

Mencantumkan Direktori

Anda dapat menggunakan daftar() metode yang disediakan oleh File objek untuk membuat daftar semua file dan direktori yang tersedia dalam direktori sebagai berikut −

Contoh

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 /tmp . Anda direktori

Keluaran

test1.txt
test2.txt
ReadDir.java
ReadDir.class

java

  1. C Masukan Keluaran (I/O)
  2. File Python I/O
  3. Variabel dan Literal Java
  4. Input dan Output Dasar Java
  5. Kelas dan Objek Java
  6. Kelas Abstrak Java dan Metode Abstrak
  7. Java Nested dan Kelas Dalam
  8. Lemparan Jawa
  9. Kelas Pemindai Java
  10. Autoboxing dan unboxing Java