package om.gh.homework;
import java.io.*;
/**
* 实现分割文件;
* @param file
*/
public class HomeWork {
/**
* @param src
* 要分割的文件路径
* @param n
* 每个文件的大小以mb为单位
* @param desc
* 分割的文件存放路径
* @throws FileNotFoundException
*/
public static void filesplit(File src, int mb, File desc)
throws FileNotFoundException {
// 判断文件路径
if (src.exists() && src.isFile() && desc.isDirectory()) {
int fileSize = mb * 1024 * 1024;
int n;
// 判断要分割文件的个数n;
if (src.length() % fileSize == 0)
n = (int) (src.length() / fileSize);
else
n = (int) (src.length() / fileSize) + 1;
try {
InputStream is = new FileInputStream(src);
BufferedInputStream bis = new BufferedInputStream(is);
for (int i = 0; i < n; i++) {// 循环写入每个文件;
byte[] b = new byte[fileSize];
String newfile = desc.getPath() + File.separator
+ src.getName()+"_"+ i + ".dat";
BufferedOutputStream bos = new BufferedOutputStream(//缓存流
new FileOutputStream(newfile));
int len = -1;
int count=0;
while ((len = bis.read(b)) != -1) {
bos.write(b,0,len);
count+=len;
bos.flush();
if(count>=fileSize)break;
}
bos.close();
}
bis.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
throw new FileNotFoundException("文件不存在或者参数错误!");
}
} public static void main(String[] args) {
File src = new File("F:\\电影\\万万没想到.mp4");//要分割的目标文件
File desc = new File("f:\\视频\\");//分割完存放的路径
int mb = 500;// 每个文件大小,以Mb为单位;
System.out.println("开始分割...");
try {
filesplit(src, mb, desc);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("分割完成!");
}
}
 package om.gh.homework;
import java.io.*;
/**
* 把分割后的文件合并
*
* @author ganhang
*
*/
public class Homework2 {
/**
*
* @param desc
* 合成后的文件路径
* @param src
* 要合成的文件列表
*/
public static void merge(File desc, File... src) {
try {
String filename = src[0].getName().substring(0,
src[0].getName().lastIndexOf("_"));
File newfile = new File(desc.getPath() + File.separator + filename);
OutputStream os = new FileOutputStream(newfile);
BufferedOutputStream bos = new BufferedOutputStream(os);
for (int i = 0; i < src.length; i++) {
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(src[i]));
byte[] b = new byte[1024 * 1024];
int len = -1;
while ((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
bos.flush();
}
bis.close();
}
bos.close();
os.close();
System.out.println("合成成功!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
File desc=new File("f:\\视频\\");
File [] src={
new File("f:\\视频\\万万没想到.mp4_0.dat"),
new File("f:\\视频\\万万没想到.mp4_1.dat"),
new File("f:\\视频\\万万没想到.mp4_2.dat"),
new File("f:\\视频\\万万没想到.mp4_3.dat")
};
System.out.println("开始合成...");
merge(desc,src);
}
}

java学习之IO文件分割的更多相关文章

  1. 6.6(java学习笔记)文件分割(IO综合例子)

    基本思路: 文件分割:将一个文件分割成若干个独立的文件.    设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中.     使用seek定位下一次读取位置. 文件 ...

  2. Java学习之==>IO文件操作体系

    一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializa ...

  3. java学习一目了然——IO

    java学习一目了然--IO IO是java学习当中很重要的一部分.IO流实现数据的上传下载,即读写数据,包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件.数据库等读取到内存中所 ...

  4. Java学习-043-获取文件在目录中的路径

    我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...

  5. Java学习-014-文本文件写入实例源代码(两种写入方式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...

  6. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

  7. Java学习-011-创建文件实例及源代码

    此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: /** * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若 ...

  8. Java学习-010-创建文件夹源代码

    此文源码主要为应用 Java 创建文件目录的源码.若有不足之处,敬请大神指正,不胜感激! 创建文件夹源代码如下所示: /** * @function 文件操作:创建文件夹.若文件夹不存在,则级联创建文 ...

  9. java学习笔记IO之File类

    File类总结 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0p ...

随机推荐

  1. Glog

    Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势. 0,  glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活 ...

  2. redis在java项目中的使用

    在上一篇文章中已经讲了redis的spring配置,这篇将会描述redis在java项目中的使用. redis存储形式都是key-value(键值对),按照存储的内容分为两种,一种是存简单数据,即数字 ...

  3. USACO Section 5.4 TeleCowmunication(最小割)

    挺裸的一道最小割.把每台电脑拆成一条容量为1的边,然后就跑最大流.从小到大枚举每台电脑,假如去掉后 最大流=之前最大流+1,那这台电脑就是answer之一了. -------------------- ...

  4. Java学习之异常处理

    在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性.       Throwabl ...

  5. [置顶] 老孟 DB2 V9.7 ESE(一)产品部署 基于centOS 6.4

    本文安装系统CENTOS 6.4 DB2位数64 安装中涉及目录位置各位可自行定义 生产系统为安全和性能考虑,一般将DB2实例目录.日志目录.归档日志目录.表空间目录区分开,可建立/db2home / ...

  6. React使用笔记1-React的JSX和Style

    React使用笔记1-React的JSX和Style Date: 2015-11-27 20:56 Category: Web Tags: JavaScript Author: 刘理想 [toc] 1 ...

  7. 在IT公司,project manager 基本上和秘书,助理什么的差不多

    我感觉非常有道理,所以我不做Leader,哈哈哈

  8. 卡特兰数(Catalan)简介

    Catalan序列是一个整数序列,其通项公式是 h(n)=C(2n,n)/(n+1) (n=0,1,2,...) 其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, ...

  9. 代码收藏 JS实现页内查找定位功能

    前部分为IE下搜索方法 用TextRange来实现 后部分为firefox.chrome下搜索方法 var nextIndex = 0; var searchValue = ''; var input ...

  10. JAVA的IO学习

    IO 有具体的分类: 有具体的分类:1:根据处理的数类型不同:字节流和字符流.2:根据流向不同:输入流和输出流. =============(补充字节跟字符概念区分)================= ...