Latest web development tutorials

streaming Java (Streaming), berkas (file) dan IO

paket kelas Java.io mencakup hampir semua operasi dari kebutuhan input dan output. Semua ini kelas aliran mewakili sumber input dan tujuan output.

Java.io paket streaming yang mendukung berbagai format, seperti: tipe dasar, objek, set karakter lokal dan sebagainya.

Hal ini dapat dipahami sebagai urutan aliran data. Merupakan input stream untuk membaca data dari sumber ke aliran target output mewakili menulis data.

Java menyediakan dukungan yang kuat dan fleksibel untuk I / O, sehingga lebih banyak digunakan dalam transfer file dan pemrograman jaringan.

Namun, bagian ini menjelaskan I / fungsi O terkait yang paling dasar dan aliran. Kami akan belajar melalui contoh untuk fungsi-fungsi ini.


Membaca masukan konsol

konsol Java masukan diselesaikan oleh System.in.

Dalam rangka untuk mendapatkan aliran karakter mengikat ke konsol, Anda dapat system.In dibungkus dalam sebuah objek BufferedReader untuk membuat aliran karakter.

Berikut adalah sintaks dasar untuk membuat BufferedReader:

BufferedReader br = new BufferedReader(new 
                      InputStreamReader(System.in));

Setelah BufferedReader objek dibuat, kita dapat menggunakan metode read () untuk membaca karakter dari konsol, atau membaca metode tali readLine ().


Baca input karakter lebih dari konsol

Membaca dari BufferedReader objek adalah karakter yang ingin Anda gunakan membaca () metode, yang memiliki sintaks berikut:

int read( ) throws IOException

Setiap panggilan untuk membaca () metode, yang berbunyi karakter dari input stream dan mengembalikan karakter sebagai nilai integer. Ketika akhir sungai mengembalikan -1. Metode throws IOException.

Program berikut menunjukkan metode penggunaan read () membaca karakter dari konsol terus sampai pengguna memasukkan "q".

// 使用 BufferedReader 在控制台读取字符

import java.io.*;

public class BRRead {
   public static void main(String args[]) throws IOException
   {
      char c;
      // 使用 System.in 创建 BufferedReader 
      BufferedReader br = new BufferedReader(new 
                         InputStreamReader(System.in));
      System.out.println("Enter characters, 'q' to quit.");
      // 读取字符
      do {
         c = (char) br.read();
         System.out.println(c);
      } while(c != 'q');
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

Enter characters, 'q' to quit.
123abcq
1
2
3
a
b
c
q

Membaca string dari konsol

Baca dari standard input string perlu menggunakan metode BufferedReader readLine ().

Format umum adalah:

String readLine( ) throws IOException

Program berikut membaca dan baris menampilkan karakter sampai Anda memasukkan kata "akhir".

// 使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRReadLines {
   public static void main(String args[]) throws IOException
   {
      // 使用 System.in 创建 BufferedReader 
      BufferedReader br = new BufferedReader(new
                              InputStreamReader(System.in));
      String str;
      System.out.println("Enter lines of text.");
      System.out.println("Enter 'end' to quit.");
      do {
         str = br.readLine();
         System.out.println(str);
      } while(!str.equals("end"));
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

Enter lines of text.
Enter 'end' to quit.
This is line one
This is line one
This is line two
This is line two
end
end

JDK versi 5 setelah kami juga dapat menggunakan Java Scanner kelas untuk mendapatkan masukan konsol.

konsol output

Telah diperkenalkan dalam output sebelumnya konsol dilakukan dengan print () dan println (). Metode ini didefinisikan oleh PrintStream kelas, System.out adalah referensi ke objek kelas.

PrintStream mewarisi kelas OutputStream, dan mengimplementasikan metode write (). Dengan demikian, write () juga dapat digunakan untuk dan dari konsol menulis.

Definisi paling sederhana dari PrintStream format yang write () adalah sebagai berikut:

void write(int byteval)

Metode ini akan menurunkan oktet byteval ditulis ke sungai.

contoh

Contoh berikut ini menggunakan write () karakter "A" dan diikuti oleh output karakter baris baru ke layar:

import java.io.*;

// 演示 System.out.write().
public class WriteDemo {
   public static void main(String args[]) {
      int b; 
      b = 'A';
      System.out.write(b);
      System.out.write('\n');
   }
}

Jalankan atas contoh output "A" karakter di jendela output

A

Catatan: Metode write () tidak sering digunakan karena metode cetak () dan println () lebih nyaman digunakan.


Membaca dan Menulis File

Seperti dijelaskan di atas, sungai didefinisikan sebagai urutan data. input stream untuk membaca data dari sumber ke output stream target untuk menulis data.

Berikut ini adalah deskripsi dari hirarki kelas masukan diagram dan output aliran.

Berikut ini akan dibahas dua aliran penting FileInputStream dan FileOutputStream:


FileInputStream

Aliran untuk membaca data dari sebuah file, objek dapat digunakan untuk membuat kata kunci baru.

Ada beberapa metode konstruksi dapat digunakan untuk membuat objek.

Anda dapat menggunakan nama string jenis file untuk membuat obyek input stream untuk membaca file:

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

Anda juga dapat menggunakan file objek untuk membuat objek sungai untuk membaca file input. Pertama kita harus menggunakan metode File () untuk membuat file objek:

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

InputStream objek dibuat, Anda dapat menggunakan metode berikut untuk membaca aliran sungai atau melakukan operasi lain.

Tidak. Metode dan Deskripsi
1 public void close () throws IOException { }
Menutup ini input stream berkas dan melepaskan sumber daya sistem yang terkait dengan aliran ini. Throws IOException.
2 kekosongan dilindungi menyelesaikan () throws IOException { }
Metode ini membersihkan koneksi dengan file. Memastikan bahwa tidak ada lagi memanggil file stream masukan referensi metode penutupan. Throws IOException.
3 public int read (int r) throws IOException {}
Metode ini membaca byte tertentu dari data dari objek InputStream. Ia mengembalikan nilai integer. Mengembalikan byte berikutnya data, jika Anda harus mengakhirinya mengembalikan -1.
4 public int read (byte [] r ) throws IOException {}
Metode ini membaca panjang byte r.length dari input stream. Mengembalikan jumlah byte yang dibaca. Jika itu adalah akhir dari file -1 dikembalikan.
5 public int tersedia () throws IOException { }
Mengembalikan metode doa berikutnya pada input stream ini tanpa menghalangi dengan jumlah byte dari input stream membaca. Mengembalikan nilai integer.

Selain InputStream, ada beberapa aliran masukan lainnya, untuk lebih jelasnya lihat link berikut:


FileOutputStream

Kelas ini digunakan untuk membuat file dan menulis file data.

* Jika sungai membuka file untuk output, file target tidak ada, maka sungai akan membuat file.

Ada dua cara untuk membuat objek konstruktor FileOutputStream.

Gunakan tali ketik nama file untuk membuat obyek output stream:

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

Anda juga dapat menggunakan file objek untuk menciptakan output stream untuk menulis file. Pertama kita harus menggunakan metode File () untuk membuat file objek:

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

Buat OutputStream objek selesai, Anda dapat menggunakan metode berikut untuk menulis aliran sungai atau melakukan operasi lain.

Tidak. Metode dan Deskripsi
1 public void close () throws IOException { }
Menutup ini input stream berkas dan melepaskan sumber daya sistem yang terkait dengan aliran ini. Throws IOException.
2 kekosongan dilindungi menyelesaikan () throws IOException { }
Metode ini membersihkan koneksi dengan file. Memastikan bahwa tidak ada lagi memanggil file stream masukan referensi metode penutupan. Throws IOException.
3 public void write (int w) throws IOException {}
Metode ini mengambil byte ditentukan ditulis ke output stream.
4 public void write (byte [] w )
Panjang byte array w.length yang ditentukan tertulis kepada OutputStream.

Selain OutputStream, ada beberapa aliran output lainnya, untuk lebih jelasnya lihat link berikut:

contoh

Berikut adalah demonstrasi InputStream dan OutputStream Contoh penggunaan:

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");
   }	
   }
}

Program di atas menciptakan file test.txt, dan jumlah yang diberikan ditulis dalam bentuk biner dokumen, sementara output ke konsol.

Karena ditulis dalam kode biner di atas, mungkin ada kacau, Anda dapat menggunakan kode contoh berikut untuk memecahkan masalah sampah:

//文件名 :fileStreamTest2.java
import java.io.*;

public class fileStreamTest2{
	public static void main(String[] args) throws IOException {
		
		File f = new File("a.txt");
		FileOutputStream fop = new FileOutputStream(f);
		// 构建FileOutputStream对象,文件不存在会自动新建
		
		OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
		// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
		
		writer.append("中文输入");
		// 写入到缓冲区
		
		writer.append("\r\n");
		//换行
		
		writer.append("English");
		// 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
		
		writer.close();
		//关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
		
		fop.close();
		// 关闭输出流,释放系统资源

		FileInputStream fip = new FileInputStream(f);
		// 构建FileInputStream对象
		
		InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
		// 构建InputStreamReader对象,编码与写入相同

		StringBuffer sb = new StringBuffer();
		while (reader.ready()) {
			sb.append((char) reader.read());
			// 转成char加到StringBuffer对象中
		}
		System.out.println(sb.toString());
		reader.close();
		// 关闭读取流
		
		fip.close();
		// 关闭输入流,释放系统资源

	}
}

File dan I / O

Ada juga kelas pada file dan I / O, kami juga perlu tahu:


Direktori Java

Membuat direktori:

file kelas memiliki dua metode yang dapat digunakan untuk membuat folder:

  • mkdir () metode untuk membuat folder, sukses, mengembalikan benar, gagal ia mengembalikan palsu. Kegagalan menunjukkan berkas objek jalan yang ditentukan sudah ada, atau karena seluruh jalan tidak ada, folder tidak dapat dibuat.
  • Metode mkdirs () untuk membuat folder dan semua folder induknya.

Contoh berikut membuat folder "/ 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);
      // 现在创建目录
      d.mkdirs();
  }
}

Mengkompilasi dan mengeksekusi kode di atas untuk membuat direktori "/ tmp / user / java / bin".

Catatan: Java pada UNIX dan Windows secara otomatis sesuai dengan pemisah path file resolusi yang disepakati. Jika Anda menggunakan pemisah di Windows versi Jawa, (/), jalan masih harus diselesaikan dengan baik.


membaca direktori

Sebuah direktori sebenarnya adalah sebuah objek File yang berisi file dan folder lain.

Jika Anda membuat objek File dan itu adalah sebuah direktori, metode maka isDirectory panggilan () mengembalikan nilai true.

Dengan menyebut metode daftar objek () untuk mengambil daftar file dan folder di dalamnya.

Contoh berikut menunjukkan bagaimana menggunakan metode daftar () untuk memeriksa isi dari file yang terdapat dalam folder:

import java.io.File;

public class DirList {
   public static void main(String args[]) {
      String dirname = "/tmp";
      File f1 = new File(dirname);
      if (f1.isDirectory()) {
         System.out.println( "Directory of " + dirname);
         String s[] = f1.list();
         for (int i=0; i < s.length; i++) {
            File f = new File(dirname + "/" + s[i]);
            if (f.isDirectory()) {
               System.out.println(s[i] + " is a directory");
            } else {
               System.out.println(s[i] + " is a file");
            }
         }
      } else {
         System.out.println(dirname + " is not a directory");
    }
  }
}

Contoh di atas hasil disusun adalah sebagai berikut:

Directory of /tmp
bin is a directory
lib is a directory
demo is a directory
test.txt is a file
README is a file
index.html is a file
include is a directory