/*
* 以下代码演示了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<FileInputStream> a1=new ArrayList<FileInputStream>();
//添加输入流对象操作文件。
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<FileInputStream> it=a1.iterator();
//定义一个枚举类型的变量,复写里面的方法。
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
//判断枚举里是否还有元素
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();
}
}
* 以下代码演示了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<FileInputStream> a1=new ArrayList<FileInputStream>();
//添加输入流对象操作文件。
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<FileInputStream> it=a1.iterator();
//定义一个枚举类型的变量,复写里面的方法。
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
//判断枚举里是否还有元素
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();
}
}