Latest web development tutorials

Java поток (Stream), файл (File) и IO

Пакет включает в себя класс Java.io практически все операции ввода и вывода потребностей. Все эти классы потоков представляют источник ввода и вывода назначения.

Java.io пакет потокового поддержки различных форматов, таких как: основные типы, объекты, локализованных наборов символов и так далее.

Это можно понимать как последовательность потока данных. Представляет входной поток для чтения данных из источника в целевой выходной поток представляет записи данных.

Java предоставляет мощную и гибкую поддержку ввода / вывода, что делает его более широкое применение в передачи файлов и сетевого программирования.

Тем не менее, в этом разделе описывается самый основной и поток ввода / вывода соответствующих функций. Мы будем учиться на примере этих функций.


Читайте консольного ввода

Java консоль ввода завершена к System.in.

Для того, чтобы получить привязки потока символов на консоль, вы можете System.in завернуты в объекте BufferedReader, чтобы создать поток символов.

Вот основной синтаксис для создания BufferedReader:

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

После того, как объект BufferedReader создается, мы можем использовать метод чтения () для чтения символа из консоли, или читать метод строки ReadLine ().


Подробнее ввод символов с консоли

Чтение из объекта BufferedReader это символ, который вы хотите использовать метод чтения (), которая имеет следующий синтаксис:

int read( ) throws IOException

Каждый вызов метода чтения (), который считывает символ из входного потока и возвращает символ как целое значение. Когда в конце потока возвращает -1. Метод бросает IOException.

Следующая программа демонстрирует использование способ чтения () читает символы из консоли продолжается до тех пор пока пользователь не введет "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');
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

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

Читает строку из консоли

Чтение из стандартного ввода строка должна использовать метод BufferedReader ReadLine ().

Его общий формат:

String readLine( ) throws IOException

Следующая программа считывает и строки символов отображается, пока вы не ввести слово "конец".

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

Приведенные выше примеры скомпилированные получены следующие результаты:

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 версии 5 после того, как мы можем использовать Java сканера класс , чтобы получить входной консоли.

выход консоли

Он был введен в предыдущем выходе консоли выполняется печать () и Println (). Эти методы, определенные классом PrintStream, System.out является ссылкой на объект класса.

PrintStream унаследовал OutputStream класс и реализует метод записи (). Таким образом, запись () также может быть использован и из консоли пишет.

Самое простое определение PrintStream формата записи () следующим образом:

void write(int byteval)

Этот метод позволит снизить октет byteval записывается в поток.

примеров

В следующем примере используется запись () символ "А" и последующим символом новой строки вывода символов на экран:

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

Запустите приведенный выше пример вывода символа "A" в окне вывода

A

Примечание: Метод записи () не часто используется , так как метод печати () и Println () является более удобным в использовании.


Чтение и запись файлов

Как было описано выше, поток определяется как последовательность данных. Входной поток для чтения данных из источника в выходной поток целевой для записи данных.

Ниже приводится описание иерархии классов входных и выходных диаграмма потоков.

Ниже будут рассмотрены два важных потоки FileInputStream и FileOutputStream:


FileInputStream

Поток для чтения данных из файла, его объект может быть использован для создания нового ключевого слова.

Есть несколько методов строительства могут быть использованы для создания объектов.

Вы можете использовать имя типа файла строки для создания объекта входного потока для чтения файла:

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

Вы можете также использовать объект файла, чтобы создать объект потока для чтения входных файлов. Сначала мы должны использовать метод File () для создания объекта файла:

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

объект InputStream будет создан, вы можете использовать следующий метод для чтения потока потока или выполнять другие операции.

Нет . Метод и Описание
1 общественного недействительными близко () бросает IOException { }
Замыкает этот входной поток файла и освобождает все системные ресурсы, связанные с этим потоком. Выдает IOException.
2 защищенный аннулируются финализации () броски IOException { }
Этот метод удаляет соединение с файлом. Убедитесь в том, что больше не называть его закрытым способом опорного входного файла потока. Выдает IOException.
3 публичного чтения INT (INT R) броски IOException {}
Этот метод считывает указанные байт данных из объекта InputStream. Она возвращает целое значение. Возвращает следующий байт данных, если у вас есть до конца она возвращает -1.
4 публичного чтения INT (байт [] г ) броски IOException {}
Этот метод считывает длину байта r.length из входного потока. Возвращает количество прочитанных байтов. Если это конец файла, возвращается -1.
5 общественности INT доступен () броски IOException { }
Возвращает следующий вызов метода на этом входном потоке без блокировки по количеству байтов из входного потока чтения. Возвращает целое значение.

В дополнение к InputStream, есть какой-то другой входной поток, для получения более подробной информации обратитесь к следующим ссылкам:


FileOutputStream

Этот класс используется для создания файла и записи данных файлов.

* Если поток открыть файл для вывода, целевой файл не существует, то поток будет создавать файл.

Есть два способа создания объекта конструктор FileOutputStream.

Использование строки введите имя файла, чтобы создать объект выходного потока:

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

Вы можете также использовать объект файла, чтобы создать выходной поток для записи файлов. Сначала мы должны использовать метод File () для создания объекта файла:

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

Создание объекта OutputStream завершена, вы можете использовать следующий метод для записи потока потока или выполнять другие операции.

Нет . Метод и Описание
1 общественного недействительными близко () бросает IOException { }
Замыкает этот входной поток файла и освобождает все системные ресурсы, связанные с этим потоком. Выдает IOException.
2 защищенный аннулируются финализации () броски IOException { }
Этот метод удаляет соединение с файлом. Убедитесь в том, что больше не называть его закрытым способом опорного входного файла потока. Выдает IOException.
3 общественного недействительными записи (Int W) бросает IOException {}
Этот метод принимает указанный байт, записанный в выходной поток.
4 общественного недействительными записи (байт [] ж )
Байт длины указанного w.length массива записываются в OutputStream.

OutputStream Кроме того, есть какой-то другой поток вывода, для получения более подробной информации обратитесь к следующим ссылкам:

примеров

Вот демонстрация примеров использования InputStream и 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");
   }	
   }
}

Вышеприведенная программа создает файл test.txt, и данное число, записанное в двоичной форме документа, в то время как выход на консоль.

Потому что написано в двоичном коде выше, могут быть искажены, вы можете использовать следующие примеры кода для решения проблемы мусора:

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

	}
}

Файлы и ввода / вывода

Есть также классы по файлу и I / O, мы также должны знать:


Каталог Java

Создание каталога:

Файл класса имеет два метода могут быть использованы для создания папки:

  • MkDir () метод , чтобы создать папку, успех, возвращает истину, терпит неудачу он возвращает ложь. Отказ показал объект файла Указанный путь уже существует, или потому, что весь путь не существует, папка не может быть создана.
  • Метод mkdirs () , чтобы создать папку и все ее родительской папки.

Следующий пример создает папку "/ TMP / пользователь / 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();
  }
}

Скомпилировать и выполнить приведенный выше код, чтобы создать каталог "/ TMP / пользователь / Java / Bin".

Примечание: Java на UNIX и Windows , автоматически в соответствии с согласованным разделителем пути разрешения файла. Если вы используете разделитель в версии Windows, Ява, (/), путь еще предстоит надлежащим образом решены.


Читайте каталог

Каталог на самом деле объект файла, который содержит другие файлы и папки.

При создании объекта File и это каталог, метод затем вызов isDirectory () возвращает истину.

Позвонив по методу список объектов () для извлечения списка файлов и папок, содержащихся в нем.

В следующем примере показано, как использовать метод список (), чтобы проверить содержимое файла, содержащегося в папке:

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

Приведенные выше примеры скомпилированные получены следующие результаты:

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