Java---练习:文件切割与合并(1)

实现对大文件的切割与合并。
按指定个数切(如把一个文件切成10份)或按指定大小切(如每份最大不超过10M),这两种方式都可以。

示例程序说明:
文件切割:把一个文件切割成多个碎片,每个碎片的大小不超过1M。自己可把功能进一步扩展:切割前的文件名、长度,切割后的碎片个数、文件名等信息可写到第一个碎片中或另外用properties把这些写到配置文件中。
文件合并:这里简单假设已知被合并目录的File对象和原文件的名字。其实这些完全可以做成活的,如把这些信息保存在碎片文件或配置文件,也可以同样用文件选择对话框来读取用户的选择。

实现代码:

“`
package io.string;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Scanner;

public class SequenceInputStreamDemo {
static final String FILE = “e:\fenge\”;
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入fenge文件下需要分割的文件名(需要后缀):”);
String str = sc.next();
InputStream in =new BufferedInputStream(new FileInputStream(FILE+str));

    OutputStream out = null;
    long t = 0;
    String c = "chx";
    int le;
    byte bt[] = new byte[10240];
    while((le=in.read(bt))!=-1){
        out = new BufferedOutputStream(new FileOutputStream(FILE+c+t+"_"+str));
        out.write(bt, 0, le);
        t++;
    }
    in.close();
    out.close();
    System.out.println("文件合并开始:::");
    ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
    for(int i=0;i<t;i++){
        FileInputStream f = new FileInputStream(FILE+c+i+"_"+str);
        v.add(f);
    }
    Enumeration<FileInputStream> e = Collections.enumeration(v);
    SequenceInputStream sin = new SequenceInputStream(e);

    FileOutputStream fout = new FileOutputStream(FILE+c+str);
    int len=0;
    byte bf[] = new byte[1024];
    while((len=sin.read(bf))!=-1){
        fout.write(bf, 0, len);
    }
    fout.close();
    System.out.println("文件合并结束:::");
}

}

“`

文件目录:

目前只实现了切割合并那一个文件夹下的文件!!!!

时间: 2024-10-11 00:46:25

Java---练习:文件切割与合并(1)的相关文章

java:快速文件分割及合并

文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位,对文件进行分割或合并. 看下基本思路: 如果有一个大文件,指定分割大小后(比如:按1M切割) step 1: 先根据原始文件大小.分割大小,算出最终分割的小文件数N step 2: 在磁盘上创建这N个小文件 step 3: 开多个线程(线程数=分割文件数),每个线程里,利用RandomAccessF

Java---文件的切割与合并,已经实现图形界面(工具)

实现对任意文件的切割,实现对切割后的文件的合并. 上次只写了特定目录下的文件切割与合并,有点遗憾, 这次,我写了一个图形界面来实现对文件的切割与合并. 文件切割: 用户可以自己选择需要切割的文件, 软件会自动将切割后的文件全部放入这目录下的一个新文件夹当中去的. 每分割一个新的文件,它都会自动生成一个新文件夹,新文件夹不会重名,它是根据需要切割的文件名按和后缀加了一个字符串命名的文件夹. 用户可以指定切割后的碎片每个碎片的大小,以KB为单位. 1(KB)的整数倍. 文件切割完毕后会有提示. 文件

java实现大文件分割与合并的实例代码_java

复制代码 代码如下: package com.test;  import java.io.BufferedReader;  import java.io.BufferedWriter;  import java.io.FileNotFoundException;  import java.io.FileReader;  import java.io.FileWriter;  import java.io.IOException;  import java.util.Collections;  i

android大文件切割发送,接收后在合并显示

问题描述 android大文件切割发送,接收后在合并显示 android 大文件怎么实现分块传输,最后在合并显示.可以通过切割实现吗 解决方案 是文件断点续传吗...

文件下载-java服务器文件断点续传

问题描述 java服务器文件断点续传 如何让服务器 支持断点续传的功能 要下载的文件需要放在服务器的那个位置? 客户端那边说了 我这边只需要提供给他 一个文件的下载链接就好了 而且还要支持断点续传 如何实现呢 求大神帮忙 解决方案 java 断点续传文件到远程服务器Java断点续传服务器代码java 文件下载 断点续传 解决方案二: 这个功能需要客户端配合一下,让客户端请求时带上已经成功收到字节数做为参数,你返回数据流时跳过这些字节,然后再客户端进行合并,就可以了. 解决方案三: 解析HTTP头

java实现文件重命名的方法_java

本文实例讲述了java实现文件重命名的方法.分享给大家供大家参考.具体如下: 下载的电影总是有一些存在网站名称等没用的信息 作为一个强迫症患者 一定要删除他们 package sys.file; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.*; public class ZReName { public static void main(Str

word文件如何快捷合并邮件?

  在大学必学的电脑应用中,word的应用是必不可少的.无论是计算机一级证书的考试还是在将来的工作中都会接触到,那么word文件如何快捷合并邮件?来看看吧! 方法/步骤 1.首先我们需要先写出邮件的模板. 2.在模板中,有的地方需要填上不同的姓名.这时就可以用到WSP工具来快捷合成.首先在WORD中找到邮件合并菜单,一般能在引用中找到.然后在邮件合并的菜单中打开源文件--就是我们想到添加到邮件中的数据 3.打开了源文件后,我们还需要在模板中加上合并域--就是数据所填上的地方.图中带有<>的地方

数据挖掘-如何将.names文件和.data文件的内容合并转换成arff或者csv

问题描述 如何将.names文件和.data文件的内容合并转换成arff或者csv 在UCI中下载的数据都是.names 和 .data 我想导入weka中进行分析 怎么使用呀? 解决方案 如何将PPT文件转换成PDF文件 解决方案二: 好像有个File. Replace 方法 剩下的应该没问题了

java读文件

/* Readfile.java读取文件的内容,并将原样输出至屏幕上使用方法:java Readfile 文件名*/ import java.io.*; public class Readfile{public static void main(String[] args){byte[] buff = new byte[1024];boolean cont = true;FileInputStream infile = null; // 生成对象infile 准备读取文件try{infile =