package com.jd.MoLiyingDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileSplit {
/**
* 文件分割,把一份文件分割成几份
* 文件合并,把几份文件合成一份,然后存到一个路径下
*/
public static void main(String[] args) {
fileSplit(new File("E:\\迅雷下载\\王牌贱谍.rmvb"), 3);
//merge(3, new File("E:\\迅雷下载\\王牌贱谍.rmvb"), new File(""));
}
/**
* @param file 要拆分的文件
* @param num 拆成几份。。。
*/
public static void fileSplit(File file,int num){
try {
long l = file.length();
System.out.println(l);
InputStream is=new FileInputStream(file);
BufferedInputStream bis=null;
for(int i=1;i<=num;i++){
bis=new BufferedInputStream(is);
StringBuilder sb = new StringBuilder();
sb.append(file.getParent()).append("\\")
.append(file.getName()).append("_part").append(i)
.append(".rmvb");
System.out.println(sb.toString());
File newFile=new File(sb.toString());//存放新拆分的文件
OutputStream os=new FileOutputStream(newFile);
BufferedOutputStream bos=new BufferedOutputStream(os);
byte[] bs=new byte[1024*1024*10];
int len=-1;
while((len=bis.read(bs))!=-1){
bos.write(bs, 0, len);
if(newFile.length()>(l/num)){
break;
}
}
bos.close();
}
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param num 合并几个文件
* @param path 合并到哪去
*/
public static void merge(int num,File oldPath,File newPath){
for(int i=1;i<=num;i++){
StringBuilder sb=new StringBuilder();
sb.append(oldPath.getParent()).append("\\").append(oldPath.getName()+i);
System.out.println(sb.toString());
String old = sb.toString();
try {
InputStream is=new FileInputStream(old);
BufferedInputStream bis=new BufferedInputStream(is);
File f=new File(newPath+oldPath.getName());
System.out.println(f.toString());
OutputStream os=new FileOutputStream(f);
BufferedOutputStream bos=new BufferedOutputStream(os);
byte[] bs=new byte[1024*1024*10];
int len=-1;
while((len=bis.read(bs))!=-1){
bos.write(bs, 0, len);
}
bos.close();
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileSplit {
/**
* 文件分割,把一份文件分割成几份
* 文件合并,把几份文件合成一份,然后存到一个路径下
*/
public static void main(String[] args) {
fileSplit(new File("E:\\迅雷下载\\王牌贱谍.rmvb"), 3);
//merge(3, new File("E:\\迅雷下载\\王牌贱谍.rmvb"), new File(""));
}
/**
* @param file 要拆分的文件
* @param num 拆成几份。。。
*/
public static void fileSplit(File file,int num){
try {
long l = file.length();
System.out.println(l);
InputStream is=new FileInputStream(file);
BufferedInputStream bis=null;
for(int i=1;i<=num;i++){
bis=new BufferedInputStream(is);
StringBuilder sb = new StringBuilder();
sb.append(file.getParent()).append("\\")
.append(file.getName()).append("_part").append(i)
.append(".rmvb");
System.out.println(sb.toString());
File newFile=new File(sb.toString());//存放新拆分的文件
OutputStream os=new FileOutputStream(newFile);
BufferedOutputStream bos=new BufferedOutputStream(os);
byte[] bs=new byte[1024*1024*10];
int len=-1;
while((len=bis.read(bs))!=-1){
bos.write(bs, 0, len);
if(newFile.length()>(l/num)){
break;
}
}
bos.close();
}
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param num 合并几个文件
* @param path 合并到哪去
*/
public static void merge(int num,File oldPath,File newPath){
for(int i=1;i<=num;i++){
StringBuilder sb=new StringBuilder();
sb.append(oldPath.getParent()).append("\\").append(oldPath.getName()+i);
System.out.println(sb.toString());
String old = sb.toString();
try {
InputStream is=new FileInputStream(old);
BufferedInputStream bis=new BufferedInputStream(is);
File f=new File(newPath+oldPath.getName());
System.out.println(f.toString());
OutputStream os=new FileOutputStream(f);
BufferedOutputStream bos=new BufferedOutputStream(os);
byte[] bs=new byte[1024*1024*10];
int len=-1;
while((len=bis.read(bs))!=-1){
bos.write(bs, 0, len);
}
bos.close();
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}