import java.io.*;
import java.util.*;
public class Test1
{
public static void main(String [] args) throws IOException
{
File file = new File("F://JAVA//11//splitfile");
HeBingFile(file);
}
public static void HeBingFile(File file) throws IOException
{
//获取配置文件
File[] files = file.listFiles(new SuffixFilter(".Properties")); if (files.length!=1)
{
throw new RuntimeException("配置文件不存在或不唯一");
} File fie = files[0]; Properties pro = new Properties();
FileInputStream fis = new FileInputStream(fie); pro.load(fis); String filename = pro.getProperty("filename");
int time = Integer.parseInt(pro.getProperty("time")); File[] filepart = file.listFiles(new SuffixFilter(".part")); if (filepart.length!=(time-1))
{
throw new RuntimeException("获得的分割碎片不完整");
} ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for (int i = 1;i<time-1 ;i++ )
{
al.add(new FileInputStream(filepart[i]));
} Enumeration<FileInputStream> en = Collections.enumeration(al); SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream(new File(file,filename)); byte[] by = new byte[1024]; int len = 0;
while ((len = sis.read(by))!=-1)
{
fos.write(by,0,len);
}
sis.close();
fos.close(); }
}
class SuffixFilter implements FilenameFilter
{
String ss; SuffixFilter(String ss)
{
super();
this.ss = ss;
}
public boolean accept(File file,String name)
{
return name.endsWith(ss);
}
}编译没错,运行说使用空参数!!!
import java.util.*;
public class Test1
{
public static void main(String [] args) throws IOException
{
File file = new File("F://JAVA//11//splitfile");
HeBingFile(file);
}
public static void HeBingFile(File file) throws IOException
{
//获取配置文件
File[] files = file.listFiles(new SuffixFilter(".Properties")); if (files.length!=1)
{
throw new RuntimeException("配置文件不存在或不唯一");
} File fie = files[0]; Properties pro = new Properties();
FileInputStream fis = new FileInputStream(fie); pro.load(fis); String filename = pro.getProperty("filename");
int time = Integer.parseInt(pro.getProperty("time")); File[] filepart = file.listFiles(new SuffixFilter(".part")); if (filepart.length!=(time-1))
{
throw new RuntimeException("获得的分割碎片不完整");
} ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for (int i = 1;i<time-1 ;i++ )
{
al.add(new FileInputStream(filepart[i]));
} Enumeration<FileInputStream> en = Collections.enumeration(al); SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream(new File(file,filename)); byte[] by = new byte[1024]; int len = 0;
while ((len = sis.read(by))!=-1)
{
fos.write(by,0,len);
}
sis.close();
fos.close(); }
}
class SuffixFilter implements FilenameFilter
{
String ss; SuffixFilter(String ss)
{
super();
this.ss = ss;
}
public boolean accept(File file,String name)
{
return name.endsWith(ss);
}
}编译没错,运行说使用空参数!!!
import java.util.Properties;
public class Test
{
private static final int SIZE = 1024*1024;
public static void main(String [] args) throws IOException
{
File file = new File("0.mp3");
SplitFile(file);
}
public static void SplitFile(File file) throws IOException
{
//获取文件
FileInputStream fis = new FileInputStream(file);
//用于存储文件分割信息
Properties pro = new Properties();
//将文件名保存
pro.setProperty("Filename",file.getName());
//定义一个缓冲区
byte[] by = new byte[SIZE];
int len = 0;
int cun = 1;
//指定分割碎片的存储目的
File dir = new File("F://JAVA//11//splitfile");
//判断文件夹是否存在,不存在则创建
if (!dir.exists())
{
dir.mkdirs();
} FileOutputStream fos = null; while ((len = fis.read(by))!= -1)
{
fos = new FileOutputStream(new File(dir,(cun++)+".part")); fos.write(by,0,len); fos.close();
}
//将存储分割信息学出
fos = new FileOutputStream(new File(dir,cun+".Properties")); pro.setProperty("time",cun+""); pro.store(fos,""); fis.close();
}
}
这是分割器
FileOutputStream fos = new FileOutputStream(new File(file,filename));
查了一下API
Throws:
NullPointerException - If child is null
也就是属性文件里没有找到filename这个property的定义