Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt

Input/OutputStream

相当底层的字节流读取器,一次读取8位二进制

InputStream		// 字节输入流
OutputStream	// 字节输出流

对于上面两个流对象,可以抽象地看成串口的发送和接收,一个相当原始的东西,封装一些基本方法以完成读取一个字节,发送一个字节

InputStream基本方法
Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第1张图片

// 如果读到结束则返回-1,一般作为循环的终止条件
// 无参数的read读取一个字节
// 如果加入参数b,将持续读取字节流进入b
// off地址偏置,len读取长度
int read() 
int read(byte[] b) 
int read(byte[] b, int off, int len) 

OutputStream基本方法
Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第2张图片

// 分别为:
// 写入一个字节
// 写入字节数组的全部字节
// 写入字节数组的偏置与长度部分
void write(int b)
void write(byte[] b)
void write(byte[] b, int off, int len)

流重定向(是叫这个吗

字节流读取,不管底层的流是什么,无论是socket还是控制台,都可以

InputStream重定向到 System.in 以读取控制台输入
同理 OutputStream = System.out以向控制台输出

读取一个字节

package iostream;
import java.io.*;
import java.util.*;

public class io
{
	public static void main(String[] args) throws Exception
	{
		InputStream is = System.in;
		OutputStream os = System.out;
		int r = is.read();
		os.write(r);
		os.close();
	}
}

Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第3张图片

连续读取字节

package iostream;
import java.io.*;
import java.util.*;

public class io
{
	public static void main(String[] args) throws Exception
	{
		InputStream is = System.in;
		OutputStream os = System.out;
		byte[] b = new byte[114];
		is.read(b);
		os.write(b);
		os.close();
	}
}

Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第4张图片

BufferedReader/Writer

常用的阅读器,书写器,需要底层流的支持,也就是通过在构造函数中传入底层流,比如字节流,来做到快速读取,并且封装了一些操作

优点是不在乎流的上游是什么,不管数据来源,或者将要写入到socket或者是文件

BufferedReader类从字符输入流中读取文本并缓冲字符,也就是放进缓存

BufferedWriter写入时,写入的是缓存,直到满才一次性输出,或者使用flush方法,清空并且输出未满的缓存

BufferedReader
BufferedWriter

Buffer和文件读写

可以通过FileReaderFileWriter类来构造读取,写入文件的流,再通过BufferedReaderBufferedWriter将他们封装,然后可以轻松实现向文件读取/写入数据

package iostream;
import java.io.*;
import java.util.*;

public class io
{
	public static void main(String[] args) throws Exception
	{
		Scanner scanner = new Scanner(System.in);
		// 读取+缓冲流
		FileReader fr = new FileReader("E:/MyEclipse/WorkSpace/Hello/src/iostream/input.txt");
		BufferedReader bfr = new BufferedReader(fr);
		// 写入+缓冲流
		FileWriter fw = new FileWriter("E:/MyEclipse/WorkSpace/Hello/src/iostream/output.txt");
		BufferedWriter bfw = new BufferedWriter(fw);
		
		String line;
		while((line=bfr.readLine())!=null)
		{
			System.out.println(line);
			bfw.write(line);
			bfw.newLine();
		}
		// 流写入,关闭
		bfw.flush(); bfw.close(); fw.close();
		bfr.close(); fr.close();
	}
}

Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第5张图片
Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt_第6张图片

你可能感兴趣的:(Java)