演示案例的第一步:先定义一个 User 类。
import java.io.Serializable;public class User implements Serializable{ private String uid; private String uname; public User(String uid, String uname) { this.uid = uid; this.uname = uname; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } }@Overridepublic String toString() { return "User [uid=" + uid + ", uname=" + uname + "]";}
第二步:再创建一个文件 test.txt 文件(这里的 .txt 文件任何名字和后缀都无所谓,但最好有意义)。 对于程序要做的是要写写入序列化的数据到文件中,然后再读取,需要注意的是这里写入的过程知道为什么要写就行。
public static void write() { File file = new File("test.txt"); try (FileOutputStream outputStream = new FileOutputStream(file); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);) { objectOutputStream.writeObject(new User("1", "苗子说全栈")); } catch (IOException ex) { System.out.println(ex.getMessage()); }}
完整代码如下:
运行效果:
PipedInputStream
管道输入流应该连接到管道输出流; 管道输入流然后提供写入管道输出流的任何数据字节。 通常,数据由一个线程从 PipedInputStream 对象读取,数据由其他线程写入相应的 PipedOutputStream。 不建议尝试从单个线程使用这两个对象,因为这可能会使线程死锁。 管道输入流包含一个缓冲区,在限制范围内将读取操作与写入操作分离。 如果向连接的管道输出流提供数据字节的线程不再处于活动状态,则称管道已损坏。
定义:
public class PipedInputStream extends InputStream
演示代码如下:
try (PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in)) { String message = "这里是 PipedInputStream 的演示 ···"; byte[] buffer = message.getBytes(); out.write(buffer); byte[] b = new byte[100]; int hasRead = 0; while (in.available() > 0) { hasRead = in.read(b); System.out.println(new String(b, 0, hasRead)); }} catch (IOException ex) { System.out.println(ex.getMessage());}
SequenceInputStream
SequenceInputStream 表示其他输入流的逻辑串联。 它从输入流的有序集合开始,从第一个流读取,直到到达文件末尾,然后从第二个读取,依此类推,直到在最后一个包含的输入流上到达文件末尾。
定义如下:
public class SequenceInputStream extends InputStream
代码如下:
try (FileInputStream fileInputStream1 = new FileInputStream("Input06.java"); FileInputStream fileInputStream2 = new FileInputStream("Input06.java"); SequenceInputStream sequence = new SequenceInputStream(fileInputStream1, fileInputStream2)) { byte[] b = new byte[1024]; int hasRead = 0; while ((hasRead = sequence.read(b)) != -1) { System.out.println(new String(b, 0, hasRead)); }} catch (IOException ex) { System.out.println(ex.getMessage());}
演示案例:
运行效果:
StringBufferInputStream
该类已经过期, 不建议使用。推荐使用 StringReader 类。所以在这不再演示。
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903043_3.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!