/* * 以下代码演示了java分割和合并文件的功能。 */ import java.io.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; public class SplitFileDemo { public static void main(String[] args) throws IOException { //splitFile(); merge(); } //合并文件 public static void merge() throws IOException { //多个读取流对象与文件相关联,首先创建集合 ArrayList a1=new ArrayList(); //添加输入流对象操作文件。 a1.add(new FileInputStream("c:\\abc\\1.txt")); a1.add(new FileInputStream("c:\\abc\\2.txt")); a1.add(new FileInputStream("c:\\abc\\3.txt")); //定义a1的迭代器。 final Iterator it=a1.iterator(); //定义一个枚举类型的变量,复写里面的方法。 Enumeration en=new Enumeration() { //判断枚举里是否还有元素 public boolean hasMoreElements() { //返回一个ithasNext();判断a1里面是否还有元素 return it.hasNext(); } //如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。 public FileInputStream nextElement() { //返回a1里的下一个元素 return it.next(); }}; SequenceInputStream sis =new SequenceInputStream(en); //创建文件读取流对象 FileOutputStream fos=new FileOutputStream("c:\\demo7.txt"); //定义字节数组 byte[] buf=new byte[200]; //记录数组的长度。 int len=0; //将序列流里的字符全部存入数组。 while((len=sis.read(buf))!=-1) { fos.write(buf,0,len); } fos.close(); sis.close(); } public static void splitFile() throws IOException { //创建字节输入流对象读取文本。 FileInputStream fis=new FileInputStream("c:\\b.txt"); //创建字节输出流读取文本。 FileOutputStream fos=null; //创建字节数组。 byte[] buf=new byte[40]; int len=0; int count=1; //将文本中的字节数据存入数组中。 while ((len=fis.read(buf))!=-1) { //使用字节输出流往文本里写入数据。 fos=new FileOutputStream("c:\\abc\\"+(count++)+".txt"); //将字节数组中的字节数据写入输出流的文本中。 fos.write(buf,0,len); fos.close(); } fis.close(); } }
bpl文件java_java IO流(java分割、合并任意类型文件)
最新推荐文章于 2021-03-18 18:16:32 发布