java 写两个split函数 java,完成文件分割与合并的功能

java对文件的分割与合并-以mp3音频文件说明
java对文件的分割与合并-以mp3音频文件说明
好久没有写博客了,记得刚开始学习java的时候,带着一种新鲜与好奇,写了两三篇关于在传智播客学习与生活的博客。想来,基础班都快结束了,而恰好在末尾阶段,做了些比较有意思的任务。当然了,带着一种对技术的兴趣与爱好。把今晚上做的东西与分析的思路,在此记录一下,以后也可以回忆一下以前在传智学习的点点滴滴。
分割前的文件6.53MB
执行分割和合并的效果图
分割的7个小文件
合并的文件 大小还是6.53MB
播放后的执行效果
下面的代码主要是由两个功能:&split()和merge()。分别描述如下:
split()实现的是把一个mp3文件分割成7个小的mp3文件,前面6个文件都是1M,后面个文件是分不够1M的剩余大小。
代码的分析:
1.分割方法的代码:
分割的时候,需要灵活设置处理1MB文件的技巧,在上面的代码中,即代码第47行位置,设置了一个变量,处理输出文件控制在1MB大小,其中表示的是1MB文件的大小。只要把这个问题解决了,分割就可以很快完成。
2.合并方法的代码:
在合并的代码中,难点是如何构建序列流(SequenceInputStream),因为在API中,其构造方法只有两个。
而第二种构造方法,只能传入两个InputStream,所以应该采用第一种的构造方法。难点是在如何构造Enumeration,因为他是一个接口,其设置的泛型是继承InputStream类型。第120-131行就是解决问题的关键,创建一个局部内部类,同时设置泛型为InputStream类,然后实现其中的两个方法。其中两个方法:hasMoreElements(),nextElement()和分别Iterator迭代器的hasNext()方法,next()类似。所以实现起来就简单了,这是关键。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
编写一个java程序,完成加法add运算,其中add能进行2个,3个,4个数的相加运算,要求详细的程序,且能上机需要使用函数重载
import java.util.Spublic class addTest { /**
* @param args
*/ public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("输入要运算的数字个数:");
Scanner scan = new Scanner(System.in);
int length = scan.nextInt();
int num [] = new int[length];
int result = 0;
System.out.println("依次输入要运算的数字:");
for(int i = 0; i < i++){
num[i] = scan.nextInt();
for(int i = 0; i < i++){
result = result + num[i];
System.out.println("运算j结果是:" + result); }}
为您推荐:
扫描下载二维码1195人阅读
javaSE(7)
有的时候我们想要操作的文件很大,比如:我们想要上传一个大文件,但是收到上传文件大小的限制,无法上传,这是我们可以将一个大的文件分割成若干个小文件进行操作,然后再把小文件还原成源文件。分割后的每个小文件的类型可以自己定义。
一下是我编写的一个大文件的分割和合并的代码:
package com.
import java.io.BufferedInputS
import java.io.BufferedOutputS
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
* 1、实现一个文件分割器,把一个大文件分割成若干个小文件(可根据情况自行设计),
* 分割后的文件扩展名为dat,文件名为:原文件名+原扩展名+编号+.dat
* 2、把分割后的文件再合并(文件还原)成完整文件,与源文件一致。
* @author lym
public class Homework2 {
* 文件分割
* @param src 源文件路径
* @param fileSize 分割后每个文件的大小,单位是MB
* @param dest 目标文件路径
public static void split(String src,int fileSize,String dest){
if(&&.equals(src)||src==null||fileSize==0||&&.equals(dest)||dest==null){
System.out.println(&分割失败&);
File srcFile = new File(src);//源文件
long srcSize = srcFile.length();//源文件的大小
long destSize = *fileS//目标文件的大小(分割后每个文件的大小)
int number = (int)(srcSize/destSize);
number = srcSize%destSize==0?number:number+1;//分割后文件的数目
String fileName = src.substring(src.lastIndexOf(&\\&));//源文件名
InputStream in =//输入字节流
BufferedInputStream bis =//输入缓冲流
byte[] bytes = new byte[];//每次读取文件的大小为1MB
int len = -1;//每次读取的长度值
in = new FileInputStream(srcFile);
bis = new BufferedInputStream(in);
for(int i=0;i&i++){
String destName = dest+File.separator+fileName+&-&+i+&.dat&;
OutputStream out = new FileOutputStream(destName);
BufferedOutputStream bos = new BufferedOutputStream(out);
int count = 0;
while((len = bis.read(bytes))!=-1){
bos.write(bytes, 0, len);//把字节数据写入目标文件中
if(count&=destSize){
bos.flush();//刷新
bos.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
if(bis!=null)bis.close();
if(in!=null)in.close();
} catch (IOException e) {
e.printStackTrace();
* 文件合并
* 注意:在拼接文件路劲时,一定不要忘记文件的跟路径,否则复制不成功
* @param destPath 目标目录
* @param srcPaths 源文件目录
public static void merge(String destPath,String ... srcPaths){
if(destPath==null||&&.equals(destPath)||srcPaths==null){
System.out.println(&合并失败&);
for (String string : srcPaths) {
if(&&.equals(string)||string==null)
System.out.println(&合并失败&);
//合并后的文件名
String name = srcPaths[0].substring(srcPaths[0].lastIndexOf(&\\&));
String destName = name.substring(0, name.lastIndexOf(&-&));
destPath = destPath+destN//合并后的文件路径
File destFile = new File(destPath);//合并后的文件
OutputStream out =
BufferedOutputStream bos =
out = new FileOutputStream(destFile);
bos = new BufferedOutputStream(out);
for (String src : srcPaths) {
File srcFile = new File(src);
InputStream in = new FileInputStream(srcFile);
BufferedInputStream bis = new BufferedInputStream(in);
byte[] bytes = new byte[];
int len = -1;
while((len = bis.read(bytes))!=-1){
bos.write(bytes, 0, len);
bis.close();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
if(bos!=null)bos.close();
if(out!=null)out.close();
} catch (IOException e) {
e.printStackTrace();
public static void main(String[] args) {
* 分割测试
String src = &E:\\API\\JDK_API_1_6_zh_CN.CHM&;//要分割的大文件
int fileSize = 10;
String dest = &D:\\&;//文件分割后保存的路径
System.out.println(&分割开始。。。&);
split(src, fileSize, dest);
System.out.println(&分割完成&);
* 合并测试
//合并后文件的保存路径
String destPath = &D:\\upan&;
//要合并的文件路径
String[] srcPaths = {
&D:\\JDK_API_1_6_zh_CN.CHM-0.dat&,
&D:\\JDK_API_1_6_zh_CN.CHM-1.dat&,
&D:\\JDK_API_1_6_zh_CN.CHM-2.dat&,
&D:\\JDK_API_1_6_zh_CN.CHM-3.dat&};
System.out.println(&开始合并。。。&);
merge(destPath, srcPaths);
System.out.println(&合并结束&);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:17041次
排名:千里之外
原创:38篇
(1)(3)(2)(1)(3)(2)(2)(6)(1)(3)(21)(1)本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 split函数 java 的文章

 

随机推荐