IO流(文件切割和合并)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:MyEclipse

作者:朱海恩

撰写时间: 2019.04.20

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Java的IO流是实现输入(输出)的基础,它可以方便地实现数据的输入(输出)操作,在 Java中把不同的输入(输出)源(键盘、文件、网络连接等)抽象表述 为“流”(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入输出源。 stream是从起源(source)到接收(sink)的有序数据。 Java把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入输出功 能。

Java的IO流共涉及40多个类,都非常规则,而且彼此之间存在非常紧密的联系。

文件切割:在切割文件时,我们并不知道它会切割出多少个碎片文件(根据文件的大小来切割的),会影响到文件合并。那么必须记录住被切割文件的名称,以及切割出来碎片文件的个数。以方便于合并。这个信息为了进行描述,使用键值对的方式,用到了Properties对象。

将碎片文件的个数和文件名字保存到Properties集合中。

//获取指定目录下的配置文件对象

File[] files=dir.listFiles(new SuffixFilter(".properties"));

 

//判断对象长度,当对象长度不等1时,立马手动抛异常

if (files.length!=1) {

throw new RuntimeException(dir+",该目录下没有properties扩展名的文件或者不唯一");

}

//记录配置文件对象

File confile=files[0];

 

 

文件合并:在合并文件的时候,我们并不知道在切割文件的时候,切割了多少个碎片文件,那么我们怎么进行合并文件。首先获取指定目录下的配置文件对象,进行判断,再获取配置文件的信息,加载流,获取到碎片文件的个数和文件名字,获取该目录下的所有碎片文件,判断碎片文件的长度是否等于count-1,再将碎片文件和流对象关联并存储到集合中,再将多个混合并成一个序列流。

还可以通过枚举和迭代器来实现文件合并:

//迭代器

final Iterator<FileInputStream> it=a1.iterator();

//枚举接口实现过程中利用了迭代器

Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {

//内部访问局部变量时要final

@Override

public boolean hasMoreElements() {

// TODO Auto-generated method stub

return it.hasNext();

}

@Override

public FileInputStream nextElement() {

// TODO Auto-generated method stub

return it.next();

}

};

还有简单一点的写法,直接调用它的封装方法:

Enumeration<FileInputStream> en=Collections.enumeration(a1);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值