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. Echarts数据图表插件--开源、大气、强大

    个人觉得不错,分享给大家. 教程地址:http://echarts.baidu.com/, 开源项目:https://github.com/ecomfe/echarts

  2. Ajax+asp.net实现用户登陆 转自http://www.shangxueba.com/jingyan/2933319.html

    这篇文章主要介绍了Ajax+asp.net实现用户登陆,主要是为了练习ajax的使用方法,有需要的小伙伴参考下. 以用户登录为例练习ajax的使用方法 login.html <!DOCTYPE ...

  3. iOS中运用正则表达式

    iOS中运用正则表达式来匹配短信验证码,电话号码,邮箱等是比较常见的. 在iOS中运用正则表达式主要有三种方式: -:通过谓词下面是实例代码: - (BOOL)regularExpresionWith ...

  4. 从零开始写驱动——vfd专用驱动芯片HT16514并行驱动程序编写

    前言 一直看别人搞的 vfd 很漂亮,前段时间淘了个 vfd 模块来,但没有模块资料,还好芯片没有打磨的,良心商家啊.周末抽空来研究一下这个东西. 从零开始 打开外壳 测试线路 查看芯片是 HT165 ...

  5. Oracle Enterprise Manager 11g 输入用户名和口令 点击“登录”按键后没反应,也不报错,是什么原因?

    在tnsnames.ora文件中检查设置好像没什么问题,用sqlplus也可以正常操作orcl 问题找到了,其实可简单,https://localhost:1158/em/console/logon/ ...

  6. php多图合并

    function mergerImg($imgs) { list($max_width, $max_height) = getimagesize($imgs['dst']); $dests = ima ...

  7. c# zip file and folder programmatically

    In .net 4.5 Framework, we can zip a file by this way: private static string CompressFile(string sour ...

  8. 捕捉小括号获取的内容保存在RegExp的$1 $2..属性中

    ~~~~捕捉小括号获取的内容保存在RegExp的$1 $2..属性中 var reg=/^(-?\d+)(px|pt|em|in)?$/;if(reg.test(svalue)){           ...

  9. spring boot 下 500 404 错误页面处理

    spring boot 作为微服务的便捷框架,在错误页面处理上也有一些新的处理,不同于之前的spring mvc 500的页面处理是比较简单的,用java config或者xml的形式,定义如下的be ...

  10. Microsoft SQL Server 混合云博客系列

    Microsoft 云操作系统愿景的核心支柱之一就是借助我们的混合云基础结构改造数据中心.在 Windows Azure 基础结构服务正式发布后的几个月里,我们一直在发布博客,介绍 Windows A ...