您的位置:首页 > 编程语言 > Java开发

javaSE中的输入输出流---一个读取流,对应多个输出流。而且生成的碎片文件都有有序的编号

2015-06-30 00:39 639 查看
<span style="font-size:18px;">package com.io.other.split;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class SplitFileTest {
/**
* 文件切割器。
* 一个读取流,对应多个输出流。而且生成的碎片文件都有有序的编号
* @param args
* @throws IOException
*/
private static final int DEFAULT_SIZE=1024*2;
public static void main(String[] args) throws IOException {
File srcFile=new File("chen\\11.avi");
File destDir=new File("chen\\partfiles");
SplitFile(srcFile,destDir);
}
/**
*
* @param srcFile
* @throws IOException
*/

public static void SplitFile(File srcFile,File destDir) throws IOException {

if (!srcFile.exists()) {
throw new RuntimeException(srcFile.getAbsolutePath()+",源文件不存在");
}

if(!destDir.exists()){
destDir.mkdirs();
}
//1、定义一个源文件
FileInputStream fis=new FileInputStream(srcFile);
//2、创建目的引用
FileOutputStream fos=null;
//3、创建一个缓冲区存储数据
byte[] buf=new byte[DEFAULT_SIZE];
int len=0;
int count=0;
while((len=fis.read(buf))!=-1){
//创建输出流,并明确要写入的文件
File partFile=new File(destDir,(++count)+".part");
fos=new FileOutputStream(partFile);
fos.write(buf, 0, len);
fos.close();
}
//在产生碎片文件时,需要产生一个配置文件,记录碎片的个数和源文件名字
//partfile=n;filename=11.avi

//配置文件中存储的键值信息。使用Properties集合
Properties prop=new Properties();

prop.setProperty("partcount", Integer.toString(count));
prop.setProperty("filename", srcFile.getName());
File conFile=new File(destDir,(++count)+".properties");
fos=new FileOutputStream(conFile);
//关闭资源
fos.close();
fis.close();
}

}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: