偶根据视频中的讲解试了一下可以(做计数器),我切了一个4百多兆的视频文件,切完属性大小与原大小字节数一致;
代码如下:
- import java.io.*;
- public class Snippet {
- public static void main(String[]args)throws IOException
- {
- splitFile();
- }
- public static void splitFile() throws IOException
- {
- FileInputStream fis =new FileInputStream("D:\\おおかみこどもの雨と雪.rmvb");
- FileOutputStream fos=null;
-
- byte buf[]=new byte[1024*1024*5];//定义一次写入5M数据
- int len=0;
- int count=1;
- fos=new FileOutputStream("d:\\"+(count++)+".part");
-
- int num = 1;//用来记录程序运行中实时的每个output写入次数
- while ((len=fis.read(buf))!=-1)
- {
- fos.write(buf,0,len);
- if(num>20)//如果写入次数大于20(即单个文件超过100M),则此流停止,创建新的输出流写入另外新的片段
- {
- fos.close();
- fos=new FileOutputStream("d:\\"+(count++)+".part");
- num = 1;//重新计数
- }
- else
- {
- num++;
- }
- }
- fis.close();
- fos.close();
- System.out.println("切割完毕!");
- }
- }
复制代码
如果比较大的文件的话,程序运行会需要一点时间。1G的话,我的电脑需要二三十秒。 |