public class splitAndunionJM {

	public static void main(String[] args) throws Exception {
		splitFile();
//		untin();

	}
	public static void splitFile() throws Exception{
		System.out.println("开始切割文件。。。");
		File f = new File("F:\\0123\\文件合并与切割\\Merge/IMG2.jpg");
	    String splitTo = "F:\\0123\\文件合并与切割\\Split";
	    File to = new File(splitTo,"1.part");
	    long start = System.currentTimeMillis();
		FileInputStream fis = new FileInputStream(f);
		FileOutputStream fos =  new FileOutputStream(to);
		int num=1;
		int len;
		while ((len = fis.read())!=-1) {
			len = len^3;//加密
			fos.write(len);
			if ((to.length())==(1024*1024)) {//1024*1024大小为1M
				to = new File(splitTo,(++num)+".part");
				fos =  new FileOutputStream(to);
			}
		}
		fis.close();
		fos.close();
		long end = System.currentTimeMillis();
		System.out.println("文件切割成功!耗时:"+(end-start));
	}
	public static void untin() throws Exception{
		System.out.println("开始合并文件。。。");
		File dir = new File("F:\\0123\\文件合并与切割\\Split");
		File mergeFile = new File("F:\\0123\\文件合并与切割\\Merge","合并.jpg");
		FileOutputStream out = new FileOutputStream(mergeFile);
		ArrayList<InputStream> list = new ArrayList<InputStream>();
		 long start = System.currentTimeMillis();
		//将 文件夹下的所有文件关联字节输入流 然后 将输入流 添加到ArrayList集合中
		File[] files = dir.listFiles();
		InputStream ins = null;
		for (File file : files) {
			ins = new FileInputStream(file);
			list.add(ins);
		}
//		ins.close();这里不可以关流 太早
		System.out.println("一个有"+files.length+"个小文件。");
		final Iterator<InputStream> it = list.iterator();
		Enumeration<InputStream> e = new Enumeration<InputStream>(){
			@Override
			public boolean hasMoreElements() {
				return it.hasNext();
			}
			@Override
			public InputStream nextElement() {
				return it.next();
			}
		};//语句的分号 不要漏掉 
		SequenceInputStream sin = new SequenceInputStream(e);
		int len = 0;
		while ((len = sin.read())!=-1) {
			len = len^3;//解密
			out.write(len);
		}
		out.close();
		ins.close();
		long end = System.currentTimeMillis();
		System.out.println("合并成功!!耗时:"+(end-start));
	}
}