IO流(四)扩展
来源:互联网 发布:splice js参数 编辑:程序博客网 时间:2024/05/22 03:47
1. 序列流
作用: 把多个文件流按照一定顺序整合在一起
将少量文件整合成文件流
FileInputStream fis1 = new FileInputStream("src/main/resources/a.txt"); FileInputStream fis3 = new FileInputStream("src/main/resources/c.txt"); SequenceInputStream sis = new SequenceInputStream(fis1, fis2);SequenceInputStream sis2 = new SequenceInputStream(sis, fis3); int b; while((b = sis2.read()) != -1) { fos.write(b); } sis2.close(); fos.close(); }
a.txt b.txt c.txt 的文本内容分别是1,2,3d.txt 123
把大量文件流整合在一起
FileInputStream fis1 = new FileInputStream("src/main/resources/a.txt"); FileInputStream fis2 = new FileInputStream("src/main/resources/b.txt"); FileInputStream fis3 = new FileInputStream("src/main/resources/c.txt"); Vector<InputStream> v = new Vector<>(); v.add(fis1); v.add(fis2); v.add(fis3); Enumeration<InputStream> en = v.elements(); SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("src/main/resources/d.txt"); int b; while ((b = sis.read()) != -1) { fos.write(b); } sis.close(); fos.close(); }
2. 内存输出流ByteArrayOutputStream
该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据,缓冲区会随着不断写入数据而增长,可用toByteArray,toString获得数据,关闭ByteArrayOutputStream 无效,也就是说此类中的方法在关闭流之后仍可以使用。
FileInputStream fis = new FileInputStream("src/main/resources/a.txt"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int b; while((b = fis.read()) != -1) { baos.write(b); } //byte[] newArr = baos.toByteArray(); //System.out.println(new String(newArr)); System.out.println(baos); fis.close();
3. 对象操作流ObjecOutputStream
直接读写对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src/main/resources/h.txt"));//创建对象输出流 ArrayList<Test> list=new ArrayList<Test>(); list.add(p1); list.add(p2); oos.writeObject(list); oos.close(); ObjectInputStream ois=new ObjectInputStream(new FileInputStream("src/main/resources/h.txt")); ArrayList<Test> testList = (ArrayList<Test>) ois.readObject(); for(Test test1:testList){ System.out.println(test1.toString()); } ois.close(); }
public class Test implements Serializable{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Test(String name) { this.name = name; } @Override public String toString() { return "Test{" + "name='" + name + '\'' + '}'; }}
注意:写出来的文件你看不懂
阅读全文
0 0
- IO流(四)扩展
- IO流(四)
- Java(四)--IO流
- IO流(四)--IO包中的其他类
- IO流(四):其他流
- java IO-输入输出流(四)
- 其他对象和IO流(四)
- Java IO流详解(四)
- java IO流解析(四)
- 史上最全IO框架四(转换流)
- IO技术(四)转换流
- Java IO(四)- 转换流
- IO流循序渐进四
- IO流之四
- Java IO流(四)
- IO总结(四)
- IO(四)
- 正则表达式扩展----网页爬虫(复习io流+网络)
- Java的clone克隆详解
- 发合格如今按规定主任同时与
- (转载)C# 的Hashtable和Dictionary比较
- 焕然一新的游戏体验,vivo X20全面屏这次厉害了
- CNBC:亚马逊、百度、谷歌将在未来三年统治智能语音市场
- IO流(四)扩展
- 机器学习方法篇(16)------朴素贝叶斯分类
- 推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsupp
- 接口测试总结
- 已知参数个数的函数,如何实现柯里化?
- lamp环境下php链接数据库出错之一直加载空白页解决方案
- 《计算机是怎样跑起来的》 矢泽久雄------附Z80微型计算机电路图
- kettle7.1 执行job或trans时出现的错误“Invalid byte 2 of 2-byte UTF-8 sequence