Detailed Explanation of Character Buffer Stream Instance of Java IO Stream


Character stream:

1. Add character cache stream to enhance reading function (readLine)

2. Read data more efficiently

BufferedReader

Read text from the character input stream and buffer each character, thus realizing efficient reading of characters, arrays and lines.

FileReader: Internal use of InputStreamReader, decoding process, byte- > char, default cache size is 8k

BufferReader: The default cache size is 8k, but you can manually specify the cache size to read data into the cache, reducing each conversion process and making it more efficient

/ Character input buffer stream
	private static void charReader() {
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");
		try {
			// Character stream
			Reader reader = new FileReader(file);
			// It provides buffer for character stream, which has achieved the purpose of efficient reading
			BufferedReader bufr = new BufferedReader(reader);

			char[] chars = new char[1024];
			int len = -1;
			while((len = bufr.read(chars)) != -1) {
				System.out.println(new String(chars,0,len));
			}
      bufr.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

BufferedWriter

Writes text to the character output stream, buffering individual characters to provide efficient writing of individual characters, arrays, and strings

FileWriter: Internal use of InputStreamWriter, decoding process, byte- > char, default cache size is 8k

BufferWriter: The default cache size is 8k, but you can manually specify the cache size to read data into the cache, reducing each conversion process and making it more efficient

// Character output buffer stream
	private static void charWriter() {
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");
		try {
			// Character stream
			Writer writer = new FileWriter(file,true);// Append
			// It provides buffer for character stream, which has achieved the purpose of efficient reading
			BufferedWriter bufr = new BufferedWriter(writer);
			bufr.write(" Here is the character buffer stream \r\n");
			bufr.flush();
			bufr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Summary:

package com.lemon;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
/**
 *  Purpose of caching:
 *  Solve the problem of performance degradation caused by frequent operation of files when writing files
 * BufferedOutputStream The internal default cache size is 8kb That is stored in the cache every time it is written byte Array, when the array is full, the data in the array will be written to the file
 *  And the cache subscript returns to zero
 *
 *  Character stream:
 * 1 Add character cache stream and enhance read function ( readLine )
 * 2 Read data more efficiently
 * FileReader : Internal use InputStreamReader , decoding process, byte->char The default cache size is 8k
 * BufferReader The default cache size is 8k However, you can manually specify the cache size to read data into the cache, reducing each conversion process and making it more efficient
 * BufferedWriter Ibid.
 * @author lemonSun
 *
 * 2019 Year 5 Month 4 Sunday afternoon 8:12:53
 */
public class BufferStreamDemo {

	public static void main(String[] args) {
	//	byteWriter();
	//	byteReader();
//		byteReader1();
//		charReader();
		charWriter();
	}

	// Character output buffer stream
	private static void charWriter() {
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");
		try {
			// Character stream
			Writer writer = new FileWriter(file,true);// Append
			// It provides buffer for character stream, which has achieved the purpose of efficient reading
			BufferedWriter bufr = new BufferedWriter(writer);
			bufr.write(" Here is the character buffer stream \r\n");
			bufr.flush();
			bufr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	// Character input cache stream
	private static void charReader() {
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");
		try {
			// Character stream
			Reader reader = new FileReader(file);
			// It provides buffer for character stream, which has achieved the purpose of efficient reading
			BufferedReader bufr = new BufferedReader(reader);

			char[] chars = new char[1024];
			int len = -1;
			while((len = bufr.read(chars)) != -1) {
				System.out.println(new String(chars,0,len));
			}
			bufr.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	// Cache stream input   No need to close  try Automatic shutdown   Must be realized Closeable Interface
	private static void byteReader1(){
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");

		//buf Scope in try Multiple statements in braces try(;) , ; Separate
		try(BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file))) {
			byte[] bytes = new byte[1024];
			int len = -1;
			while((len = buf.read(bytes)) != -1) {
				System.out.println(new String(bytes,0,len));
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	// Cache stream input
	private static void byteReader(){
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");

		try {
			// Byte output stream
			InputStream in = new FileInputStream(file);
			// Byte buffer stream
			BufferedInputStream buf = new BufferedInputStream(in);
			byte[] bytes = new byte[1024];
			int len = -1;
			while((len = buf.read(bytes)) != -1) {
				System.out.println(new String(bytes,0,len));
			}
			buf.close();// Automatic shutdown  in.close

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}


	// Cache stream output
	private static void byteWriter(){
		// Object file
		File file = new File("F:\\javatest\\lemon1.txt");

		try {
			// Byte output stream
			OutputStream out = new FileOutputStream(file,true);
			// Buffer flow
			BufferedOutputStream buf = new BufferedOutputStream(out);
			// Content
			String info = " Here is the buffered stream \r\n";
			// Write
			buf.write(info.getBytes());
			buf.close(); //jdk1.7 Automatically shut down later  out
		//	out.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}