Latest web development tutorials

Strumień Java (Stream), plik (File) i IO

Java.io klasy Pakiet zawiera niemal wszystkie operacje potrzeb wejściowych i wyjściowych. Wszystkie z tych klas strumienia stanowią źródło sygnału wyjściowego i docelowego.

Java.io Pakiet strumieniowe obsługują różne formaty, takie jak: podstawowe typy, obiektów zlokalizowanych zestawów znaków i tak dalej.

może być rozumiana jako sekwencja strumienia danych. Reprezentuje strumień wejściowy do odczytu danych ze źródła do strumienia wyjściowego docelowa jest zapis danych.

Java zapewnia wydajne i elastyczne wsparcie dla I / O, dzięki czemu jest bardziej powszechnie stosowane w transfery plików i programowania sieciowego.

Jednak ta sekcja opisuje najbardziej funkcje I / O związanych podstawowy i strumień. Będziemy uczyć się poprzez przykład dla tych funkcji.


Czytaj wejście konsoli

Wejście konsoli Java wypełnia System.in.

W celu uzyskania wiązania strumień znaków na konsoli można System.in owinięty w obiekcie BufferedReader aby utworzyć strumień znaków.

Oto podstawowa składnia, aby utworzyć BufferedReader:

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

Po utworzeniu obiektu BufferedReader, możemy użyć metody read (), aby odczytać znak z konsoli lub poczytać metody ciąg readline ().


Czytaj więcej wejściowych znaków z konsoli

Odczyt z obiektu BufferedReader to postać chcesz użyć metody odczytu (), która ma następującą składnię:

int read( ) throws IOException

Każde wywołanie metody odczytu (), który odczytuje znak ze strumienia wejściowego i zwraca znak jako wartość całkowitą. Kiedy koniec strumienia zwraca -1. Metoda wyrzuca IOException.

Poniższy program demonstruje sposób używać read () odczytuje znaki z konsola trwa dopóki użytkownik wpisze "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');
   }
}

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

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

Odczytuje łańcuch z konsoli

Czytaj ze standardowego wejścia ciąg musi użyć metody BufferedReader readline ().

Jego ogólny format jest:

String readLine( ) throws IOException

Następujący program odczytuje i wyświetla wiersze znaków aż wpisać słowo "koniec".

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

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 w wersji 5 po możemy również użyć Java skanera klasy dostać konsolę wejściowego.

wyjście Konsola

Została wprowadzona w poprzednim wyjściu z konsoli odbywa się za pomocą druku () i println (). Te metody zdefiniowane przez PrintStream klasy System.out jest odniesieniem do obiektu klasy.

PrintStream dziedziczone OutputStream klasę i wdraża metody write (). W ten sposób, zapis () może być również stosowany do i od konsoli zapisów.

Najprostsza definicja formatu PrintStream write () są następujące:

void write(int byteval)

Metoda ta obniża oktet byteval zapisywane w strumieniu.

Przykłady

W poniższym przykładzie użyto write () znak "A" i zakończoną nową linią wyjścia znak na ekranie:

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

Uruchom znak "A" Powyższy przykład wyjściowe w oknie wyjściowym

A

Uwaga: Ta metoda write () nie jest często stosowane, ponieważ metoda print () i println () jest bardziej wygodny w użyciu.


Odczytywanie i zapisywanie plików

Jak opisano powyżej, strumień jako sekwencję danych. Strumień wejściowy do odczytu danych ze źródła do strumienia wyjściowego docelowego dla zapisu danych.

Poniżej znajduje się opis strumieni wejściowych Schemat hierarchii klas i wyjściowymi.

Poniższa zostaną omówione dwie ważne strumienie FileInputStream i FileOutputStream:


FileInputStream

Strumień do odczytu danych z pliku, jego przedmiot może być wykorzystane do stworzenia nowego słowa kluczowego.

Istnieje kilka metod budowlane mogą być stosowane do tworzenia obiektów.

Można użyć nazwy pliku typu ciąg, aby utworzyć obiekt strumienia wejściowego do odczytu pliku:

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

Można również używać obiektu pliku, aby utworzyć obiekt strumienia do odczytu plików wejściowych. Najpierw trzeba użyć metody File (), aby utworzyć obiekt pliku:

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

tworzony jest obiekt InputStream, można użyć następującej metody do odczytu przepływu strumienia lub wykonywać inne operacje.

Nie. Sposób i opis
1 public void close () throws IOException { }
Zamyka ten strumień i zwalnia wejściowego pliku Wszelkie zasoby systemowe związane z tym strumieniu. Zgłasza IOException.
2 protected void sfinalizowania () throws IOException { }
Metoda ta kasuje połączenia z plikiem. Upewnić się, że nie nazywam ścisłą referencyjną metodę strumienia wejściowego pliku. Zgłasza IOException.
3 public int read (int r) rzuca IOException {}
Metoda ta odczytuje wskazany bajtów danych z obiektu InputStream. Zwraca wartość całkowitą. Zwraca następny bajt danych, jeśli masz do końca zwraca -1.
4 public int read (byte [] R ) wyrzuca IOException {}
Metoda ta odczytuje długość bajtów r.length ze strumienia wejściowego. Zwraca liczbę bajtów odczytanych. Jeśli jest to koniec pliku -1 zwrócone.
5 dostępne public int () throws IOException { }
Zwraca następnej metody wywołania tego strumienia wejściowego bez blokowania przez liczbę bajtów z odczytu strumienia wejściowego. Zwraca wartość całkowitą.

Oprócz InputStream, istnieje jakiś inny strumień wejściowy, więcej szczegółów można znaleźć w poniższych linków:


FileOutputStream

Ta klasa jest używana do tworzenia pliku i zapisu danych plików.

* Jeśli strumień otworzyć plik dla wyjścia, plik docelowy nie istnieje, wtedy strumień utworzy plik.

Istnieją dwa sposoby, aby utworzyć obiekt konstruktor FileOutputStream.

Zastosowanie Ciąg wpisz nazwę pliku, aby utworzyć obiekt strumienia wyjściowego:

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

Można również używać obiektu pliku, aby utworzyć strumień wyjściowy do zapisu plików. Najpierw trzeba użyć metody File (), aby utworzyć obiekt pliku:

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

Tworzenie obiektu OutputStream jest kompletny, można użyć następującej metody zapisu przepływu strumienia lub wykonywać inne operacje.

Nie. Sposób i opis
1 public void close () throws IOException { }
Zamyka ten strumień i zwalnia wejściowego pliku Wszelkie zasoby systemowe związane z tym strumieniu. Zgłasza IOException.
2 protected void sfinalizowania () throws IOException { }
Metoda ta kasuje połączenia z plikiem. Upewnić się, że nie nazywam ścisłą referencyjną metodę strumienia wejściowego pliku. Zgłasza IOException.
3 public void write (int w) rzuca IOException {}
Metoda ta zajmuje bajt określony pisemnej do strumienia wyjściowego.
4 public void write (byte [] szer )
Długość bajt określony w.length tablicy pisemnej do OutputStream.

OutputStream Ponadto istnieje jakiś inny strumień wyjściowy, więcej szczegółów można znaleźć w poniższych linków:

Przykłady

Oto demonstracja InputStream i OutputStream przykłady stosowania:

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

Powyższy program tworzy Test.txt pliku i dany numer napisany w formie binarnej dokumentu, podczas wyjścia do konsoli.

Bo to jest napisane w kodzie binarnym powyżej, nie mogą być zniekształcone, można zastosować następujące przykłady kodu, aby rozwiązać problem śmieci:

//文件名 :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();
		// 关闭输入流,释放系统资源

	}
}

Pliki i I / O

Istnieją również zajęcia z pliku i I / O, musimy również wiedzieć:


Katalog Java

Tworzenie katalogu:

Klasa File zawiera dwie metody mogą być wykorzystywane do tworzenia folderu:

  • mkdir () aby utworzyć folder, sukces, zwraca prawdę, nie zwraca false. Nieprzestrzeganie pokazał obiekt File określona ścieżka już istnieje, albo dlatego, że cała ścieżka nie istnieje, folder nie może zostać utworzony.
  • Metoda mkdirs (), aby utworzyć folder i wszystkie jego folderu nadrzędnego.

Poniższy przykład tworzy 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();
  }
}

Skompilować i wykonać powyższy kod, aby utworzyć katalog "/ tmp / user / java / bin".

Uwaga: Java w systemie UNIX i Windows automatycznie zgodnie z ustalonym separatora ścieżkę pliku rozdzielczości. Jeśli korzystasz z separatora w windowsowej wersji Java, (/), ścieżka jest nadal być właściwie rozwiązany.


Czytaj katalog

Katalog jest rzeczywiście obiekt File, który zawiera inne pliki i foldery.

Jeśli tworzysz obiekt File i jest katalogiem, metoda następnie isDirectory call () zwraca true.

Dzwoniąc na metodzie lista Object (), aby wyodrębnić listę plików i katalogów, które zawiera.

Poniższy przykład pokazuje, jak użyć metody list () aby sprawdzić zawartość pliku zawartego w folderze:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

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