java小demo文件分割器

一个小demo,给朋友传大文件的时候传不过去的话,可以玩玩 

//过滤文件目录

import java.io.File;

import java.io.FilenameFilter;

 

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.endsWith(suffix);

}

 

}

 

 

//分割文件

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Properties;

 

public class SplitFileDemo {

private static final int SIZE=1048576;

public static void main(String[] args) throws IOException {

File f=new File("F:\\硕鼠下载区\\百度音乐盒.mp3");//在这配置需要分割的文件

splitFile(f);

}

public static void splitFile(File file) throws IOException{

FileInputStream fis=new FileInputStream(file);

//1m的缓存区

byte[] buf= new byte[SIZE];

FileOutputStream fos=null;

int len=0;

int count=1;

Properties prop=new Properties();

File dir=new File("F:\\partfiless");

if(!dir.exists()){

dir.mkdirs();

}

while((len=fis.read(buf))!=-1){

fos=new FileOutputStream(new File(dir,(count++)+".part"));

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,"ave file info");

fos.close();

fis.close();

}

}

 

 

//合并文件

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.SequenceInputStream;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Enumeration;

import java.util.Properties;

 

public class MergeFile {

/**

* @throws IOException

*

*/

public static void main(String[] args) throws IOException {

File dir = new File("F:\\partfiless");

mergeFile_2(dir);

}

 

private static void mergeFile_2(File dir) throws IOException {

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

if(files.length!=1)

throw new RuntimeException(dir+"目录有问题");

//记录配置文件

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[] pareFiles=dir.listFiles(new suffixFilter(".part"));

if(pareFiles.length!=(count-1)){

throw new RuntimeException("碎片错误应有"+count);

}

//合并碎片集合

ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();

for(int x=0;x<pareFiles.length;x++){

al.add(new FileInputStream(pareFiles[x]));

}

//序列流

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

SequenceInputStream sis=new SequenceInputStream(en);

FileOutputStream fos=new FileOutputStream(new File(dir,filename));

byte[] buf=new byte[1024];

int len=0;

while((len=sis.read(buf))!=-1){

fos.write(buf, 0, len);

}

fos.close();

sis.close();

}

 

private static void mergeFile(File dir) throws IOException {

ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>();

for(int x=1;x<=3;x++){

a1.add(new FileInputStream(new File(dir,x+".part")));

}

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

SequenceInputStream sis=new SequenceInputStream(en);

FileOutputStream fos=new FileOutputStream(new File(dir,""));

byte[] buf=new byte[1024];

int len=0;

while((len=sis.read(buf))!=1){

fos.write(buf, 0, len);

}

fos.close();

sis.close();

}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值