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

来源:互联网 发布:电子商务的软件流程 编辑:程序博客网 时间:2024/05/17 06:23
<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>

0 0
原创粉丝点击