Flujo de memoria intermedia
Las secuencias
almacenadas en búfer también se denominan secuencias avanzadas, que son mejoras a las cuatro secuencias básicas de FileXXX, por lo que también son cuatro secuencias clasificadas según el tipo de datos: una secuencia de búfer que puede leer y escribir eficientemente, una secuencia de conversión que puede convertir la codificación y un objeto de almacenamiento persistente. Flujo serializado
- Flujo de búfer de bytes : BufferedInputStream, BufferedOutputStream
- Secuencia de búfer de caracteres : BufferedReader, BufferedWriter
Flujo de entrada almacenado en byte [BufferedInputStream]
! ! ! Código en! ! !
public class Demo01BufferedInputStreram {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\cccc.txt"));
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
}
bis.close();
}
}
! ! ! El resultado! ! ! La función proporcionada por FileInputStream es la misma que leer el contenido del archivo de manera eficiente
Flujo de salida en búfer de bytes [BufferedOutputStream]
! ! ! Código en! ! !
public class Demo02BufferedOutputStream {
public static void main(String[] args) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("F:\\dddd.txt", true));
String content = "!!!!Hello World!!!" + "\r\n";
for (int i = 0; i < 10; i++) {
bos.write(content.getBytes());
}
System.out.println("文件输出成功");
bos.close();
}
}
**! ! ! El resultado! ! ! ** La función proporcionada por FileIOnputStream es la misma que leer el contenido del archivo de manera eficiente
Demo CopyFile
! ! ! ¡Ingrese el código y copie los archivos! ! ! No me importa qué archivo sea. . . .
public class Demo03CopyFIle {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\Media\\MO8EPSG_1.rmvb"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("F:\\MO8EPSG_1.rmvb"));
long start = System.currentTimeMillis();
byte[] bytes = new byte[10245];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
bos.write(bytes, 0, len);
}
bis.close();
bos.close();
long end = System.currentTimeMillis();
System.out.println("本次复制文件用了:" + (end - start) + "毫秒");
}
}
**! ! ! El resultado! ! ! ** Solo tomó 1 segundo copiar 1 archivo G
Flujo de entrada de caracteres almacenados temporalmente [BufferedReader]
Lea el texto de una secuencia de entrada de caracteres y caracteres de búfer para proporcionar una lectura eficiente de caracteres, matrices y líneas.
Se puede especificar el tamaño del búfer o se puede usar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los usos.
! ! ! Código en! ! !
public class BufferedReaderAndBufferedWriter {![在这里插入图片描述](https://img-blog.csdnimg.cn/20200217205959345.png)
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("F:\\cccc.txt"));
char[] chars = new char[1024];
int len = 0;
while ((len = br.read(chars)) != -1) {
System.out.println(new String(chars, 0, len));
}
}
}
! ! ! El resultado! ! !
Nota:
La entrada del archivo especificado se almacenará en el búfer. No hay almacenamiento en búfer, y cada llamada a read () o readLine () puede hacer que los bytes se lean del archivo, se conviertan en caracteres y luego se devuelvan. Esto puede ser muy ineficiente
. Los programas que usan DataInputStreams para la entrada de texto pueden reemplazarse usando el BufferedReader apropiado Localice cada DataInputStream
Secuencia de salida del búfer de caracteres [BufferedWriter]
Escriba texto en una secuencia de salida de caracteres, almacenando caracteres en búfer para proporcionar una escritura eficiente de caracteres individuales, matrices y cadenas.
Puede especificar el tamaño del búfer o puede aceptar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los usos.
! ! ! Código en! ! !
public class Demo02BufferedWriter {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\ffff.txt", true));
String content = "Hello World" + "\r\n";
for (int i = 0; i < 10; i++) {
bw.write(content);
}
bw.close();
}
}
! ! ! El resultado! ! !
Nota:
La salida de PrintWriter se almacenará en un archivo. Sin almacenamiento en búfer, cada método call to print () convertirá caracteres en bytes y luego escribirá en el archivo inmediatamente, lo que puede ser muy ineficiente