java下io文件切割合并功能加配置文件

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;
    }

}
时间: 2024-10-24 02:10:01

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

java下io文件合并功能

package cn.stat.p1.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;

JAVA之IO技术相关Properties类 存储配置文件信息

package ioTest.io3; /* * Properties存储配置文件信息 * 1.文件信息--------------------------- * 2.根据文件信息获取key和value---|流| * 3.将key,value的之对应存储到properties对象中 */ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOu

Java基础IO文件拷贝练习题

/** * 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt. */ 1.我们看到这个题还是用大化小的思想来做 分析:1.拷贝 >>> 选择什么流呢??>>>拷贝我在上篇博客中写到,我们用字节流,字符流只读只写 2.java结尾 >> 我们可以想到String中的endsWith()方法. 3.拷贝成功后再改后缀名>>File中有一个后缀名的方法renameTo()的方法 4.

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

Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. /sbin/    许多系统命令的存储位置,/usr/sbin/中也包括了许多命令. /root/    超级用户,即根用户的主目录. /home/    普通用户的默认目录,在该目录下,每个用户拥有一个以用户名命名的文件夹. /boot/    存放Ubuntu内核和系统启动文件. /boot/gr

IO流--切割 合并文件

import java.io.*; import java.util.*; public class io { public static void main(String[] args)throws IOException { splitFile(); merge(); } //切割文件 public static void splitFile() throws IOException { FileInputStream fis = new FileInputStream("e:\\4.jpg

JAVA之IO文件读写

IO概述:                                                          IO(Input output)流 作用:IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式             Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流和字符流流按流向分为:输入流,输出流. IO流常用基类字节流的抽象基类:InputStream,OutputStream.字符流的抽象基类:Reader,Writer注:由

如何用Java来进行文件切割和简单的内容过滤

一 由来 去年由于项目的需求,要将一个任意一个文件制作成一个xml文件,并且需要保持文件内容本身不产生变化,并且还要能够将这个xml还原为原文件.如果小型的文件还好处理,大型的xml,比如几个G的文件,就很难直接从节点中提取了.所以我来我们采用了以文件流的方式.于是有了这个文件的裁剪工具. 二 使用场景 本工具可能的使用场景: 1.对任一文件的切割/裁剪.通过字节流的方式,开始节点和终止节点,裁剪出两个节点之间的部分. 2.往任一文件的头/尾拼接指定字符串.可以很容易将一个文件嵌入在某一个节点中

windows系统下的文件夹链接功能mklink/linkd

vista及以上系统的mklink命令可以创建文件夹的链接(感觉像是文件夹的映射).因为是从底层实现文件夹链接,所以这个链接是对应用程序透明的. (windows 2000,xp,server 2003的相应功能是linkd,这里只说说mklink) 比如,我有一个文件夹叫C:\Program Files,但是c盘空间不多了,就想把一些应用程序转移到d盘,但是直接剪切过去肯定行不通,应用程序会报错,所以首先把C:\Program Files文件夹整个移动(剪切)到d盘,再执行命令: mklink

Java 实现大文件切割并生成多个文件

话不多说,直接上代码 import java.io.*; /*** * 分割大文件 * ( * SQL 文件太大(insert),第三方工具无法一次性读取,进行分割 * 生成 一个一个文件 * ) */ public class SplitFileUtil { // 使用示例 public static void main(String[] args) { // 目标文件 String targetFile = "F:\\logs\\insert11.sql"; // 存放的目录 St