class SplitFileDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
public static void splitFile(File file)
{
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024*1024];
FileOutputStream fos = null;
int len = 0;
int num = 1;
Properties prop = new Properties();
File dir = new File("c"\\partFile");
if(!dir.exits())
dir.madirs();
while((len=fis.read(buf))!=-1)
{
fos = new FileOutputStream(new File(dir,num+".part"));
num++;
fos.write(buf,0,len);
fos.close();
}
prop.setProperty("partcount",count+"");
prop.setProperty("filename",file.getName());
fos = new FileOutputStream(new File(dir,count+".properties"));
prop.store(fos,"sava file info");
fis.close();
}
}
public class MergeFile
{
public static void mergeFile(File dir)
{
//获取指定目录下配置文件对象
File[] files = dir.listFiles(new SufixFilter(".properties"));
if(files.length!=1)
throw new RuntimeException(dir+",该目录下没有或者不唯一.properties");
//记录配置文件对象
File confile = files[0];
//获取该文件的信息
Properties prop = new Properties();
FileInputStream fis = new FileInputStream(confile);
prop.load(fis);
String filename = prop.getProperty("filename");
int count = Integer.parseInt(prop.getProperty("partcount"));
//获取该目录下的所有碎片文件
File[] partFiles = dir.listFile(new SuffixFilter(".part"));
if(partFiles.length!=(count-1))
throw new RuntimeException("碎片个数不对,应该有"+(count)+"个");
// ArrayList<FileInputStream> a1 = new ArrayList<FileInputStream>;
// for(int x=1;x<=3;x++)
//将碎片文件和流对象关联并存储到集合中
ArrayList<FileInputStream> a1 = new ArrayList<FileInputStream>;
for(int x=0;x<partFiles.length;x++)
{
// a1.add(new FileInputStream(new File(dir,x+".part")));
a1.add(new FileInputStream(partFiles[x]));
}
//将多个流合并成一个序列流
Enueration<FileInputStream> em = Collection.enueration(a1);
SequenceInputStream sis = new SequenceInputStream(em);
FileOutputStream fos = new FileOutputStream(new File(dir,"1.txt"));
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
sis.close();
fos.close();
}
}
public class SuffixFilter implements FilenameFilter
{
private String suffix;
public SuffixFilter(String suffix)
{
super();
this.suffix = suffix;
}
public boolean accept(File dir,String name)
{
return name.endsWidth(suffix);
}
}
java基础学习笔记——I/O文件切割与合并
最新推荐文章于 2015-11-05 21:37:19 发布