文件切割器和文件合并器

一、文件切割器

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

public class SplitFileDemo{
 private static final int SIZE = 1024*1024;
 public static void main(String[] args) throws IOException{
 File file = new File("0.mp3" );
 splitFile(file);
 }

 public static void splitFile(File file) throws IOException {
 //用读取流关联源文件
 FileInputStream fis = new FileInputStream(file);

 //定义一个1M的缓冲区

 byte[] buf = new byte[SIZE];

 //创建目的
 FileOutputStream fos = null;

 int len = 0;
 int count = 1;

 //切割文件时,必须记录住被切割文件的名称,以及切割出来碎片文件的个数,以方
便于合并。
//这个信息为了进行描述,使用键值对的方式,用到了properties对象。

 Properties prop = new Properties();
 File dir = new File("c:\\partFiles" );
 if(!dir.exists())
 dir.mkdirs();
 while((len = fis.read(buf)) != -1){
 fos = new FileOutputStream(new File(dir,(count++) +
".part"));
 fos.write(buf,0,len);
 fos.close();
 }

 //将被切割文件的信息保存到prop集合中
 prop.setProperty( "partcount",count + "" );
 prop.setProperty( "filename",file.getName());

 fos = new FileOutputStream(new File(dir,count + ".properties" ));

 //将prop集合中的数据存储到文件中
 prop.store(fos, "save file info");

 fis.close();
 fos.close();
 }
 }

二 、文件合并器


 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.SequenceInputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.Properties;

 public class MergeFile{
 public static void main(String[] args) throws IOException {
 File dir = new File("c:\\partFiles" );
 mergeFile(dir);
 }

 public static void mergeFile(File dir) throws IOException {

 //获取指定目录下的配置文件对象
 File[] files = dir.listFiles( new SuffixFilter(".properties" ));

 if(files.length!=1)
 throw new RuntimeException(dir + ",该目录下没有properties扩
展名的文件或者不唯一" );

 //记录配置文件对象
 File confile = files[0];

 //获取该文件中的信息
 Properties prop = new Properties();
 FileInputStream fis = new FileInputStream(confile);

 prop.load(fis);

 String filename = prop.getProperty( "filename");

 int count = Integer.parseInt(prop.getProperty("partcount"));

 //获取该目录下的所有碎片文件
 File[] partFiles = dir.listFiles( new SuffixFilter(".part" ));

 if(partFiles.length != (count - 1)){
throw new RuntimeException("碎片文件不符合要求,个数不对!应该
是" + count + "个");
 }

 //将碎片文件和流对象关联并存储到集合中
 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();

 for(int x = 1; x <= partFiles.length; x++){
 al.add( new FileInputStream(partFiles[x-1]));
 }

 final Iterator<FileInputStream> it = al.iterator();

 //将多个流合并成一个序列流
 Enumeration<FileInputStream> en = Collections.enumeration(al);

 SequenceInputStream sis = new SequenceInputStream(en);

 FileOutputStream fos = new FileOutputStream(new
File(dir,filename));

 byte[] buf = new byte[1024*1024];
 int len = 0;
 while((len = sis.read(buf)) != -1){
 fos.write(buf,0,len);
 }

 fos.close();
 sis.close();
 }
 }

 class SuffixFilter implements FilenameFilter{
 private String suffix;

 public SuffixFilter(String suffix){
 super();
 this.suffix = suffix;
 }

 public boolean accept(File dir,String name){
return name.endsWith(suffix);
 }
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 文件分割是一种软件工具,用于将较大的文件分割成多个较小的文件。这种工具通常被用于将大文件分割成若干个部分,以方便在传输、备份或存储时使用。 文件分割的使用方法通常很简单,只需要将待分割的文件从软件界面上拖放到指定位置,然后按照设定的参数进行切割即可。用户可以根据需要进行设置,如文件分割数目、每个文件的大小等。 文件分割具有灵活性和便捷性,可以节省空间和时间。它可以让用户更加方便地备份和存储大文件,降低了传输大文件的风险和成本。同时,文件分割也能够避免因为文件过大而导致系统崩溃或运行缓慢的问题。 总之,文件分割是一种实用的工具,可以有效地优化文件管理和传输,提高工作效率和数据安全性。 ### 回答2: 文件分割file-splitter指的是一种软件工具,它可以将单个大文件分割成若干个较小的文件,方便进行传输、备份、存储和处理等应用。同时,该工具也可以对分割后的文件进行合并操作,恢复原始文件文件分割的使用非常简单,用户只需要选择需要分割的文件,设置分割的大小或数量,即可完成分割操作。分割后的文件具有独立性,可以远程传输、储存和处理,不会对原始文件产生影响。在一些网络传输场景中,大文件可能会被网络中断或者过于繁忙等原因导致传输失败。使用文件分割,可以将文件分割成若干小文件,这样即使遇到网络中断或过于繁忙等问题,只需重新传输失败的文件分割部分,而不需要重新传输整个大文件,节约时间和带宽。 除了网络传输场景,文件分割在备份和存储场景中也有着广泛的应用。备份一个文件比备份若干个小文件更容易和更高效。而对于存储场景,如果硬盘空间不足,可以将一个文件分割成若干个小文件存储在多个硬盘上,这样既不占用大量空间,又可以防止因硬盘故障而造成文件的丢失。 总之,文件分割在数据传输、备份和存储方面都有着广泛的应用,极大地方便了我们的数据处理和管理。 ### 回答3: 文件分割(file-splitter)是一种可以将一个文件分割成多个小文件的工具软件。使用文件分割可以在不改变数据内容的情况下,将文件分割为多个小文件,方便传输、存储和备份。 文件分割的主要功能是将大文件切割成指定大小的若干个小文件,同时还可以设置文件分割的数量和文件名格式。这样,用户就可以将大文件分割成若干个小文件,在传输或存储文件时更加方便。同时,文件分割还支持对分割后的文件进行合并操作,将多个小文件合并一个文件文件分割具有以下优点:一是文件分割后可以方便地进行存储和传输,且更加安全可靠;二是文件分割后的小文件可以更快地传输,也可以防止因网络传输中断而导致整个文件传输失败的情况发生;三是文件分割具有较高的灵活性,用户可以根据自己的需要制定文件分割的大小和数量,同时也可以进行合并操作,满足了用户的不同需求。 总之,文件分割是一款非常实用的工具软件,可以方便地将大文件分割成若干个小文件,更加便于存储、传输和备份。同时,文件分割还具有灵活性高、操作简便等优点,非常适合各种用户使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值