拆分文件和合并文件

找到一个大于100k的文件,按照100k为单位,拆分成多个子文件,并且以编号作为文件名结束。

public static void main(String[] args) throws FileNotFoundException, IOException {
		File f1=new File("F:/test/lol.exe");//待拆分文件的路径
		FileInputStream fis=new FileInputStream(f1);
		byte[] bf=new byte[102400];
		long length=f1.length();
		for(int i=0;length>=0;i++) {
			//最后小于一百k的数据用新建一个字节数组保存
			if(length<102400) bf=new byte[(int) length];
			fis.read(bf);//读取文件流并存储到bf字节数组里
			File f2=new File("F:/test/lol.exe-"+i);
			FileOutputStream fos=new FileOutputStream(f2);
			fos.write(bf);
			length-=102400;
		}
	}

合并上面步骤拆分的文件。

public static void main(String[] args) throws FileNotFoundException, IOException {
		File fr;//待合并文件的存储路径
		File fw=new File("F:/test1/lol.exe");//合并文件的存储路径
		FileOutputStream fws=new FileOutputStream(fw);
		byte[] bf=new byte[102400];
		for(int i=0;;i++) {
			fr=new File("F:/test/lol.exe-"+i);
			if(!fr.exists()) break;
			FileInputStream frs=new FileInputStream(fr);
			//当读到最后一个文件时,因为该文件的大小可能小于100k,所以需要根据其大小建立新的byte[]来存数据
			if(fr.length()<102400) bf=new byte[(int) fr.length()];
			while(frs.read(bf)!=-1) {
				fws.write(bf);
			}
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值