文件分割合并

1.文件分割
/**
	 * 分割文件
	 * @param srcFile:待分割的文件
	 * @param destFile:分割后存储的目录
	 * @param size:要分割的大小(单位:KB)
	 * @return filename:产生文件的文件名称
	 */
	public static String[] division(File srcFile,String destName,int size,String name){
		File destFile = new File(destName);
		int bloksize = 0;
		FileInputStream fis = null;
		try{
			//判断目标目录是否存在,如果不存在则进行创建
			if(!destFile.isDirectory()){
				destFile.mkdirs();
			}
			bloksize = 1024 * size;
			int length = (int)srcFile.length();
			//计算分割出的文件的数量
			int num = length/bloksize;
			int yu  = length%bloksize;
			fis = new FileInputStream(srcFile);
			
			File[] file = new File[num+1];
			int begin = 0;
			String[] filename = null;
			if(yu != 0)
				filename = new String[num+1];
			else
				filename = new String[num];
			for(int i=0;i<num;i++){
				file[i] = new File(destFile.getAbsolutePath()+"\\"+name+(i+1)+".fasp");
				if(!file[i].isFile()){
					file[i].createNewFile();
				}
				FileOutputStream fos = new FileOutputStream(file[i]);
				byte[] bt = new byte[bloksize];
				fis.read(bt);
				fos.write(bt);
				begin = begin + size*1024;
				fos.close();
				filename[i] = name+(i+1)+".fasp";
			}
			if(yu != 0){
				file[num] = new File(destFile.getAbsolutePath()+"\\"+name+(num+1)+".fasp");
				if(!file[num].isFile()){
					file[num].createNewFile();
				}
				FileOutputStream fosyu = new FileOutputStream(file[num]);
				byte[] bt = new byte[yu];
				fis.read(bt);
				fosyu.write(bt);
				fosyu.close();
				filename[num] = name+(num+1)+".fasp";
			}
			return filename;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

2.文件合并
	/**
	 * 文件合并
	 * @param f:需要合并的文件数组
	 * @param destName:合并后的文件存储的目录
	 * @param filename:合并文件的名称
	 * @return
	 */
	public static boolean merge(File[] f,String destName,String filename){
		File destFile = new File(destName);
		try{
			File mergeFile = new File(destFile.getAbsoluteFile()+"\\"+filename);
			//检查目标文件是否存在,如果不存在则进行创建
			if(!mergeFile.isFile()){
				mergeFile.createNewFile();
			}
			FileOutputStream fos = new FileOutputStream(mergeFile);
			//将分割的文件以文件流的方式读取然后写入到目标文件
			for(int i = 0;i<f.length;i++){
				FileInputStream fis = new FileInputStream(f[i]);
				int len = (int)f[i].length();
				byte[] bt = new byte[len];
				fis.read(bt);
				fos.write(bt);
				fis.close();
			}
			fos.close();
			return true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return false;
	}

你可能感兴趣的:(F#)