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. JavaSE_ Java基础 总目录(1~6)

    JavaSE学习总结第01天_Java概述01.01 计算机概述01.02 计算机硬件和软件概述01.03 软件开发和计算机语言概述01.04 人机交互01.05 键盘功能键和快捷键01.06 如何打 ...

  2. BZOJ 2751: [HAOI2012]容易题(easy)( )

    有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...

  3. centos7安装mysql5.6

    1.更新yum源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-communit ...

  4. 关于tomcat的clean

    1 添加了一个web项目到tomcat,然后进行clean的时候,根目录实际上是在WebContent下,也就是说存放在WebContent目录下的所有文件在clean的时候才会被添加到tomcat对 ...

  5. First AngularJS !

    My first angular! <html ng-app> <head> <meta charset="utf-8"> <script ...

  6. Oracle10g任务调度创建步骤

    /* 创建可执行程序 */begin DBMS_SCHEDULER.CREATE_PROGRAM( program_name => 'peace_sj_his.PROG_DATASYNC', p ...

  7. 转:alphaImageLoader滤镜加载后 链接不能点击

    我是一个很少使用IE滤镜,也是一个不赞成使用IE滤镜的前端工程师.不过今天有一个朋友给我发来了一个有关于IE6的BUG,就是在IE6中使用了AlphaPNG透明的IE滤镜之后,a链接不能够点击.具体情 ...

  8. JavaBean讲解 规范

    一:JavaBean定义 JavaBean是一种可重复使用.跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean,例如NetBean中 ...

  9. Cstyle的札记,Freertos内核具体解释,第0篇

        Freertos是一个硬实时内核,支持众多的微处理器架构,我们能够从它的官网(www.freertos.ort)下载它的sourcecode,同一时候也能够看出它支持了几十种的微处理器架构,这 ...

  10. Android 中文API (67) —— BluetoothClass.Device.Major

    前言 本章内容是android.bluetooth.BluetoothClass.Device.Major,为Android蓝牙部分的章节翻译,版本为Android 2.3   r1,翻译来自中山大学 ...