本帖最后由 杜佳瑞 于 2012-8-10 10:47 编辑
楼主想要的效果是可以实现的,毕老师在视频中提过一句,虽然数组我们只设置了1M,但是我们可以设置一个计数器,每一个碎片存储100次,用这个计数器来计数,不就是100M吗。下面是我改动的,希望可以帮助你。
import java.io.*;
public class Demo
{
public static void main(String[]args) throws IOException
{
File file=new File("D:\\123.avi");
FileInputStream fis=new FileInputStream(file);
int count=0,len=0,num=1;//num就是计数器,这里我设置的是1因为它不用作角标,存一次就算一次的。
byte[] bytes=new byte[1024*1024];
FileOutputStream fos=new FileOutputStream("D:\\"+count+".part");
while((len=fis.read(bytes))!=-1)
{
//当计数器存够100次后,第一个100M碎片产生,这时count++看,继续存储第二个碎片。
if(num>100)
{
count++;
num=1;//计数器归位
fos=new FileOutputStream("D:\\"+count+".part");//创建新碎片
}
fos.write(bytes,0,len);
num++;//每存一次计数器加1
fos.flush();
}
fos.close();
fis.close();
}
}
|