PushbackInputStream用于解析InputStream内的数据。有时候你需要提前知道接下来将要读取到的字节内容,才能判断用何种方式进行数据解析。
PushBackInputStream允许你这么做,你可以把读取到的字节重新推回到InputStream中,以便再次通过read()读取
new PushbackInputStream(new FileInputStream(“D:/Sunxy_workspace/pushback.txt”), 8); 设置了8个字节的缓冲区,可以重新读取8个字节的数据
public class PushbackT { public static void main(String[] args) throws IOException { PushbackInputStream input = new PushbackInputStream(new FileInputStream("D:/Sunxy_workspace/pushback.txt")); int data = input.read(); while (data != -1){ char c =(char)data; System.out.println(c); if (c=='w'){ input.unread(data); System.out.println((char)data); break; } data = input.read(); } } }
SequenceInputStream把一个或者多个InputStream整合起来,形成一个逻辑连贯的输入流。
当读取SequenceInputStream时,会先从第一个输入流中读取,完成之后再从第二个输入流读取,以此推类
import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.SequenceInputStream; import java.nio.charset.StandardCharsets; public class SequenceStreamT { public static void main(String[] args) throws IOException { InputStream in1 = new ByteArrayInputStream("lingYiWin,".getBytes(StandardCharsets.UTF_8)); InputStream in2 = new ByteArrayInputStream("EngineerForSoul".getBytes(StandardCharsets.UTF_8)); InputStream in = new SequenceInputStream(in1, in2); int data = in.read(); while (data != -1) { System.out.print((char) data); data = in.read(); } } }
PrintStream允许你把格式化数据写入到底层OutputStream中。
写入格式化成文本的int,long以及其他原始数据类型到输出流中,而非它们的字节数据。
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; public class PrintStreamT { public static void main(String[] args) throws FileNotFoundException { PrintStream output = new PrintStream(new FileOutputStream("D:/Sunxy_workspace/print.txt")); output.print(true); output.print((int) 123); output.print((float) 123.456); output.close(); } }
PushbackReader与PushbackInputStream类似,唯一不同的是PushbackReader处理字符,PushbackInputStream处理字节
PushbackReader reader = new PushbackReader(new FileReader(file), 8); 设置缓冲区为8.
public class PushbackT { public static void main(String[] args) throws IOException { PushbackReader reader = new PushbackReader(new FileReader("D:/Sunxy_workspace/pushback2.txt")); int read = reader.read(); while (read != -1){ char c =(char)read; System.out.println(c); if (c=='天'){ reader.unread(read); System.out.println((char)read); break; } read = reader.read(); } } }