Latest web development tutorials

corriente de Java (Stream), archivos (File) e IO

paquete de la clase Java.io incluye casi todas las operaciones de las necesidades de entrada y salida. Todas estas clases de flujo representan la fuente de entrada y destino de salida.

Java.io paquete de soporte de streaming una variedad de formatos, tales como: tipos básicos, objetos, juegos de caracteres localizados y así sucesivamente.

Se puede entender como una secuencia de un flujo de datos. Representa el flujo de entrada para leer datos desde un origen a un flujo de salida de destino representa escribir datos.

Java proporciona un soporte potente y flexible para I / O, lo que es más ampliamente utilizado en las transferencias de archivos y programación de la red.

Sin embargo, esta sección se describe el I / O funciones relacionadas más básica y corriente. Vamos a aprender a través de un ejemplo de estas funciones.


Leer entrada de la consola

entrada de la consola de Java completado por el System.in.

Con el fin de obtener un flujo de caracteres de unión a la consola, puede system.In envuelto en un objeto BufferedReader para crear un flujo de caracteres.

Ésta es la sintaxis básica para crear un BufferedReader:

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

Una vez creado objeto BufferedReader, podemos utilizar el método read () para leer un carácter de la consola, o leer un método de cadena readLine ().


Más de introducción de caracteres desde la consola

Leer el objeto BufferedReader es un carácter que desea utilizar el método (), que tiene la siguiente sintaxis siguiente:

int read( ) throws IOException

Cada llamada al método read (), que lee un carácter del flujo de entrada y devuelve el carácter como un valor entero. Cuando el extremo de la corriente devuelve -1. El método lanza IOException.

El programa siguiente muestra el uso del método de lectura () lee los caracteres de la consola continúa hasta que el usuario introduce "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');
   }
}

Los ejemplos anteriores resultados compilados son los siguientes:

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

Lee una cadena desde la consola

Leer desde la entrada estándar una cadena necesita usar un método BufferedReader readLine ().

Su formato general es:

String readLine( ) throws IOException

El siguiente programa lee y muestra las filas de caracteres hasta que introduzca la palabra "fin".

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

Los ejemplos anteriores resultados compilados son los siguientes:

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ón 5 después también podemos utilizar Java escáner clase para obtener la consola de entrada.

salida de la consola

Se ha introducido en la salida anterior de la consola se realiza mediante print () y println (). Estos métodos definidos por la PrintStream clase, System.out es una referencia a la clase de objeto.

PrintStream hereda la clase OutputStream, y pone en práctica el método de escritura (). Por lo tanto, de escritura () también se puede utilizar desde y hacia la consola escribe.

La definición más simple de formato PrintStream de escritura () son los siguientes:

void write(int byteval)

Este método bajará octeto byteval escrito a la corriente.

Ejemplos

En el siguiente ejemplo se utiliza escritura () el carácter "A" y seguido de una salida de carácter de nueva línea de la pantalla:

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

Ejecutar el ejemplo anterior carácter de salida "A" en la ventana de resultados

A

Nota: método de escritura () no se utiliza a menudo porque el método de impresión () y println () es más cómodo de usar.


La lectura y escritura de archivos

Como se describió anteriormente, una corriente se define como una secuencia de datos. flujo de entrada para leer datos desde la fuente a la corriente de salida de destino para la escritura de datos.

La siguiente es una descripción de los flujos de entrada diagrama de jerarquía de clases y de salida de.

Se discutirá el siguiente dos corrientes importantes se FileInputStream y FileOutputStream:


FileInputStream

La corriente para la lectura de datos de un archivo, su objeto se puede utilizar para crear una nueva palabra clave.

Hay varios métodos de construcción se pueden utilizar para crear objetos.

Puede usar el nombre del archivo tipo de cadena para crear un objeto flujo de entrada para leer el archivo:

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

También puede utilizar un objeto de archivo para crear un objeto de flujo para leer los archivos de entrada. Primero tenemos que utilizar el método de archivos () para crear un objeto de archivo:

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

Se crea objeto InputStream, puede utilizar el siguiente método para leer el flujo de la corriente o realizar otras operaciones.

No. Método y Descripción
1 public void close () throws IOException { }
Cierra esta corriente de entrada de archivo y libera los recursos del sistema asociados a esta corriente. Throws IOException.
2 protected void finalize () throws IOException { }
Este método despeja la conexión con el archivo. Asegúrese de que ya no se llama su estrecha referencia a método flujo de entrada de archivos. Throws IOException.
3 public int read (int r) throws IOException {}
Este método lee los bytes especificados de los datos del objeto InputStream. Devuelve un valor entero. Devuelve el siguiente byte de datos, si tiene que terminar devuelve -1.
4 public int read (byte [] r ) throws IOException {}
Este método lee longitud bytes r.length de la corriente de entrada. Devuelve el número de bytes leídos. Si es el final del archivo se devuelve -1.
5 int público disponible () throws IOException { }
Devuelve el siguiente invocación de método en este flujo de entrada sin bloquear por el número de bytes de la lectura flujo de entrada. Devuelve un valor entero.

Además de InputStream, hay algún otro flujo de entrada, para más información, consulte los siguientes enlaces:


FileOutputStream

Esta clase se utiliza para crear un archivo y escribir datos de archivo.

* Si la corriente de abrir un archivo de salida, el archivo de destino no existe, entonces la corriente va a crear el archivo.

Hay dos formas de crear un objeto constructor de FileOutputStream.

Usar cadena escriba un nombre de archivo para crear un objeto de flujo de salida:

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

También puede utilizar un objeto de archivo para crear un flujo de salida para escribir archivos. Primero tenemos que utilizar el método de archivos () para crear un objeto de archivo:

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

Crear objeto OutputStream se ha completado, puede utilizar el siguiente método para escribir el flujo de la corriente o realizar otras operaciones.

No. Método y Descripción
1 public void close () throws IOException { }
Cierra esta corriente de entrada de archivo y libera los recursos del sistema asociados a esta corriente. Throws IOException.
2 protected void finalize () throws IOException { }
Este método despeja la conexión con el archivo. Asegúrese de que ya no se llama su estrecha referencia a método flujo de entrada de archivos. Throws IOException.
3 pública de escritura void (int w) throws IOException {}
Este método toma el byte especificado por escrito a la secuencia de salida.
4 public void write (byte [] w )
La longitud en bytes de la matriz w.length especificado por escrito al OutputStream.

Además OutputStream, hay alguna otra secuencia de salida, para más información, consulte los siguientes enlaces:

Ejemplos

Aquí es una demostración de ejemplos de uso de InputStream y 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");
   }	
   }
}

El programa anterior crea una test.txt archivo, y el número dado por escrito en forma binaria del documento, mientras que la salida a la consola.

Debido a que está escrito en código binario anterior, no se puede distorsionar, puede utilizar los siguientes ejemplos de código para resolver el problema de la basura:

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

	}
}

Los archivos y E / S

También hay clases en los archivos y E / S, que también necesitan saber:


El directorio de Java

Crear un directorio:

clase File tiene dos métodos se pueden utilizar para crear una carpeta:

  • mkdir () para crear una carpeta, el éxito, devuelve verdadero, falla devuelve falso. El no mostró ruta especificada objeto de archivo ya existe, o porque toda la ruta no existe, la carpeta no puede ser creado.
  • mkdirs método () para crear una carpeta y todo su carpeta principal.

En el siguiente ejemplo, se crea la carpeta "/ tmp / usuario / 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();
  }
}

Compilar y ejecutar el código anterior para crear el directorio "/ tmp / usuario / java / bin".

Nota: Java en UNIX y Windows automáticamente de acuerdo con el separador de ruta del archivo de resolución acordada. Si utiliza un separador en la versión para Windows de Java, (/), el camino aún no se ha resuelto correctamente.


leer directorio

Un directorio es en realidad un objeto File que contiene otros archivos y carpetas.

Si crea un objeto File y es un directorio, a continuación, un método isDirectory llamada () devuelve verdadero.

Al invocar el método de lista de objetos () para extraer una lista de archivos y carpetas que contiene.

El siguiente ejemplo muestra cómo utilizar el método de la lista () para comprobar el contenido de un archivo contenido en la carpeta:

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

Los ejemplos anteriores resultados compilados son los siguientes:

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