java学习之IO文件分割
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文件分割的更多相关文章
- 6.6(java学习笔记)文件分割(IO综合例子)
基本思路: 文件分割:将一个文件分割成若干个独立的文件. 设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中. 使用seek定位下一次读取位置. 文件 ...
- Java学习之==>IO文件操作体系
一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializa ...
- java学习一目了然——IO
java学习一目了然--IO IO是java学习当中很重要的一部分.IO流实现数据的上传下载,即读写数据,包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件.数据库等读取到内存中所 ...
- Java学习-043-获取文件在目录中的路径
我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...
- Java学习-014-文本文件写入实例源代码(两种写入方式)
此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...
- Java学习-013-文本文件读取实例源代码(两种数据返回格式)
此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...
- Java学习-011-创建文件实例及源代码
此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: /** * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若 ...
- Java学习-010-创建文件夹源代码
此文源码主要为应用 Java 创建文件目录的源码.若有不足之处,敬请大神指正,不胜感激! 创建文件夹源代码如下所示: /** * @function 文件操作:创建文件夹.若文件夹不存在,则级联创建文 ...
- 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 ...
随机推荐
- ADF 项目创建流程
ADF 项目创建流程: 1.首先建好应用 2.创建model,UI 3.创建EO,VO,AO, VL 4.设置EO的属性 5.新建lov 6.设置VO的View Accessors,并设置Attrib ...
- pkg-config的用法
pkg-config的用法 pkg-config pkg-config程序是干什么用的?简单的说就是向用户向程序提供相应库的路径.版本号等信息的程序. 譬如说我们运行以下命令:pkg-config ...
- unity 播放外部视频
摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. ...
- 浅谈JDBC(二)
JDBC中的事务 简单来说,事务就是要保证一组DAO方法的操作,要么一起成功要么一起失败. 1.事务控制的位置 在Service中的业务方法内进行事务控制. 2.事务控制的代码 a.注意:JDBC会自 ...
- MFC下DLL编程(图解)
DLL(Dynamic Link Library,动态链接库)是微软公司为Windows和OS/2操作系统设计一种供应用程序在运行时调用的共享函数库.DLL是应用程序的一种扩展,也是软件共享和重用的传 ...
- BZOJ 3156: 防御准备( dp + 斜率优化 )
dp(i)表示处理完[i,n]且i是放守卫塔的最小费用. dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N) 然后斜率优化 ------------ ...
- javascript 原型 和 原型链
最近几天,好些新同事来问原型,原型链啥的.本身作为菜鸟的我好像也没有好好整理过这个,这里写写自己的理解. 原型 大家都知道,JavaScript 不包含传统的类继承模型,而是使用 prototype ...
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
- C和指针 读书笔记
准备复习一下之前读过的<C和指针>,主要看之前标记过的地方. 感觉像第一次看的地方再记录一下-- 1.预处理器读入源代码,根据预处理指令对其进行修改,然后将修改后的源代码交给编译器. 2. ...
- 为sublime安装package control 解决乱码问题 Mac版
为sublime安装package control Mac版参考 https://sublime.wbond.net/installation 防止中文乱码其实只需要2个东东 一个GBK enc ...