ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

06 Java BIO java.io流;PushbackInputStream;SequenceInputStream;PrintStream;PushbackReader

2022-01-09 20:00:33  阅读:160  来源: 互联网

标签:BIO 06 java read import new data public


PushbackInputStream

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

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

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

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

标签:BIO,06,java,read,import,new,data,public
来源: https://blog.csdn.net/lingyiwin/article/details/122398089

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有