package cn.stat.p1.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties; public class qiefiledemo { private static int SIZE=1024*1024;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException { //文件切割
File file=new File("D:\\3.avi");
splitFile(file); //文件组合
File file2=new File("D:\\cc");
mergeFile(file2); }
//文件组合
public static void mergeFile(File dir) throws IOException
{
//读取配置文件
File[] files =dir.listFiles(new sufFilter(".properties")); //判断文件是否存在
if(files.length!=1)
throw new RuntimeException("文件不存在"); //创建文件流
File fl=files[0];
//获取文件信息
Properties prot=new Properties();
FileInputStream fis=new FileInputStream(fl);
prot.load(fis); String filename=prot.getProperty("filename");
int count=Integer.parseInt(prot.getProperty("patconut")); //获取目录下所有的碎片文件
File[] patfile=dir.listFiles(new sufFilter(".pat")); if(patfile.length!=count)
{
throw new RuntimeException("数目不对");
} ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int i=0;i<patfile.length;i++)
{
al.add(new FileInputStream(new File(dir,i+".pat")));
} Enumeration<FileInputStream> en=Collections.enumeration(al);
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream(new File(dir,filename));
byte[] buf=new byte[SIZE];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close(); } //文件切割
public static void splitFile(File file) throws IOException
{
//用于读取流的关联文件
FileInputStream fis=new FileInputStream(file);
//定义一个1M的缓冲区
byte[] buf=new byte[SIZE]; //创建目地
FileOutputStream fos=null; //创建文件切割配置文件信息
Properties prop=new Properties(); int conut=0;
int len=0; File dir=new File("D:\\cc");
if(!dir.exists())
{
dir.mkdir();
} while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream(new File(dir,(conut++)+".pat"));
fos.write(buf,0,len);
} //创建配置文件
fos=new FileOutputStream(new File(dir,conut+".properties"));
prop.setProperty("patconut",conut+"");
prop.setProperty("filename",file.getName());
prop.store(fos,""); fos.close();
fis.close(); } }
package cn.stat.p1.file;

import java.io.File;
import java.io.FilenameFilter; public class sufFilter implements FilenameFilter { private String suffix; @Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(suffix);
} public sufFilter(String suffix) {
super();
this.suffix = suffix;
} }

java下io文件切割合并功能加配置文件的更多相关文章

  1. java下io文件切割合并功能

    package cn.stat.p1.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  2. Ajax+Java实现大文件切割上传

    技术体系:html5(formdata) + java + servlet3.0+maven + tomcat7 <!DOCTYPE html> <html> <head ...

  3. Ubuntu根目录下各文件夹的功能详细介绍

    Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. / ...

  4. Java基础IO文件拷贝练习题

    /** * 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt. */ 1.我们看到这个题还是用大化小的思想来做 分析:1.拷贝 & ...

  5. jni 文件切割合并

    最近学习c++,看到很多常用的例子,比如文件切割,切割后后缀可以自定义,别人就无法从表面的一个文件看出是什么,也无法查看到原文件信息,只有合并后才能识别这庐山真面目 实现也比较粗暴,首先在应用层定义好 ...

  6. IO流--切割 合并文件

    import java.io.*; import java.util.*; public class io { public static void main(String[] args)throws ...

  7. Linux下的文件切割和文件合并

    linux下文件分割可以通过split命令来实现,可以指定按行数分割和按大小分割两种模式.Linux下文件合并可以通过cat命令来实现. 在Linux下用split进行文件分割: ①:指定分割后文件行 ...

  8. JAVA之IO文件读写

    IO概述:                                                          IO(Input output)流 作用:IO流用来处理设备之间的数据传输 ...

  9. Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

随机推荐

  1. ASP.NET常用技术之Cookie

    cookie是一小段的文本信息(多数浏览器限制cookie最大字节数为4096字节),在浏览器和服务器之间随用户请求而传递(用户访问网站,没有设置cookie限制范围情况下,无论请求那个页面,浏览器和 ...

  2. cmd中用PING命令时,出现'Ping'不是内部或外部命令

    在cmd中用PING命令时,出现'Ping' 不是内部或外部命令,也不是可运行的程序或批处理文件.先了解一下内容:1.可执行文件.命令文件和批处理文件以.exe或者.com或者.bat为扩展名的文件分 ...

  3. MySQL新建用户,授权,删除用户,修改密码总结

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用. 用户:rdingcn 用户数据库:rdi ...

  4. Java泛型的基本应用

    一.泛型概述 jdk1.5版本以后出现的新特性,用于解决安全问题,是一个安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. 什么时 ...

  5. VLC测试IPv4 IGMP/IPv6 MLD协议

    1 简述 VLC既可以充当流客户端,又可以充当流服务器,并且可以跨平台使用,是一款开源.免费的软件,基于GNU GPL许可证. 2 搭建组播服务器 第一步:运行程序后选择“媒体  串流”:第二步:通过 ...

  6. LED驅動芯片對LED壽命的影響

    5050年,領導作為一種新型節能光源在世界和中國有非常高的熱情和偉大的問題,不得不贏得市場占有率從室外到室內照明應用,中國也如雨后春筍般涌現在大型和小型LED照明企業.鑒于LED照明的主要原因是其促進 ...

  7. Altium Designer summer 9 布线 - 差分对布线

    差分信号系统是采用双绞线进行信号传输的,双绞线中的一条信号线传送原信号,另一条传送的是与原信号反相的信号.差分信号是为了解决信号源和负载之间没有良好的参考地连接而采用的方法,它对电子产品的干扰起到固有 ...

  8. HDU_1426——数独问题,DFS

    Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...

  9. [LeetCode] 21. Merge Two Sorted Lists 解题思路

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  10. 使用MapReduce将HDFS数据导入到HBase(二)

    package com.bank.service; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf. ...