1. package om.gh.homework;
  2. import java.io.*;
  3. /**
  4. * 实现分割文件;
  5. * @param file
  6. */
  7. public class HomeWork {
  8. /**
  9. * @param src
  10. * 要分割的文件路径
  11. * @param n
  12. * 每个文件的大小以mb为单位
  13. * @param desc
  14. * 分割的文件存放路径
  15. * @throws FileNotFoundException
  16. */
  17. public static void filesplit(File src, int mb, File desc)
  18. throws FileNotFoundException {
  19. // 判断文件路径
  20. if (src.exists() && src.isFile() && desc.isDirectory()) {
  21. int fileSize = mb * 1024 * 1024;
  22. int n;
  23. // 判断要分割文件的个数n;
  24. if (src.length() % fileSize == 0)
  25. n = (int) (src.length() / fileSize);
  26. else
  27. n = (int) (src.length() / fileSize) + 1;
  28. try {
  29. InputStream is = new FileInputStream(src);
  30. BufferedInputStream bis = new BufferedInputStream(is);
  31. for (int i = 0; i < n; i++) {// 循环写入每个文件;
  32. byte[] b = new byte[fileSize];
  33. String newfile = desc.getPath() + File.separator
  34. + src.getName()+"_"+ i + ".dat";
  35. BufferedOutputStream bos = new BufferedOutputStream(//缓存流
  36. new FileOutputStream(newfile));
  37. int len = -1;
  38. int count=0;
  39. while ((len = bis.read(b)) != -1) {
  40. bos.write(b,0,len);
  41. count+=len;
  42. bos.flush();
  43. if(count>=fileSize)break;
  44. }
  45. bos.close();
  46. }
  47. bis.close();
  48. is.close();
  49. } catch (FileNotFoundException e) {
  50. e.printStackTrace();
  51. } catch (IOException e) {
  52. e.printStackTrace();
  53. }
  54. } else {
  55. throw new FileNotFoundException("文件不存在或者参数错误!");
  56. }
  57. }
  58.  
  59. public static void main(String[] args) {
  60. File src = new File("F:\\电影\\万万没想到.mp4");//要分割的目标文件
  61. File desc = new File("f:\\视频\\");//分割完存放的路径
  62. int mb = 500;// 每个文件大小,以Mb为单位;
  63. System.out.println("开始分割...");
  64. try {
  65. filesplit(src, mb, desc);
  66. } catch (FileNotFoundException e) {
  67. e.printStackTrace();
  68. }
  69. System.out.println("分割完成!");
  70. }
  71. }
  1. package om.gh.homework;
  2. import java.io.*;
  3. /**
  4. * 把分割后的文件合并
  5. *
  6. * @author ganhang
  7. *
  8. */
  9. public class Homework2 {
  10. /**
  11. *
  12. * @param desc
  13. * 合成后的文件路径
  14. * @param src
  15. * 要合成的文件列表
  16. */
  17. public static void merge(File desc, File... src) {
  18. try {
  19. String filename = src[0].getName().substring(0,
  20. src[0].getName().lastIndexOf("_"));
  21. File newfile = new File(desc.getPath() + File.separator + filename);
  22. OutputStream os = new FileOutputStream(newfile);
  23. BufferedOutputStream bos = new BufferedOutputStream(os);
  24. for (int i = 0; i < src.length; i++) {
  25. BufferedInputStream bis = new BufferedInputStream(
  26. new FileInputStream(src[i]));
  27. byte[] b = new byte[1024 * 1024];
  28. int len = -1;
  29. while ((len = bis.read(b)) != -1) {
  30. bos.write(b, 0, len);
  31. bos.flush();
  32. }
  33. bis.close();
  34. }
  35. bos.close();
  36. os.close();
  37. System.out.println("合成成功!");
  38. } catch (FileNotFoundException e) {
  39. e.printStackTrace();
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. public static void main(String[] args) {
  45. File desc=new File("f:\\视频\\");
  46. File [] src={
  47. new File("f:\\视频\\万万没想到.mp4_0.dat"),
  48. new File("f:\\视频\\万万没想到.mp4_1.dat"),
  49. new File("f:\\视频\\万万没想到.mp4_2.dat"),
  50. new File("f:\\视频\\万万没想到.mp4_3.dat")
  51. };
  52. System.out.println("开始合成...");
  53. merge(desc,src);
  54. }
  55. }

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. WebSite 文件上传Demo

    知识点: 1 <!--上传文件时:        1.必须使用Post方式来提交数据        2.必须设置表单的enctype属性        3.必须在表单中包含文件域.input t ...

  2. Css Rest 方法

    在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...

  3. 关于js封装框架类库之选择器引擎(一)

    选择器模块之传统做法 var tag = function (tag){ return document.getElementsByTagName(tag); } var id = function ...

  4. 如何分割(split)string字符串

    使用String#split()方法 如下所示: String string = "004-034556"; String[] parts = string.split(" ...

  5. UVA1471( LIS变形)

    这是LIS的变形,题意是求一个序列中去掉某个连续的序列后,能得到的最长连续递增序列的长度. 用DP的解法是:吧这个序列用数组a来记录,再分别用两个数组f记录以i结尾的最长连续递增序列的长度,g[i]记 ...

  6. Asp.net 网站发布之文件系统方式

    1.选中项目右键→发布方式选[文件系统]→点击发布 2.打开[Internet 信息服务(IIS)管理器] 默认网站(Default Web Site)→添加应用程序 填写[别名],[物理路径]选择上 ...

  7. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  8. Python 安装、循环语句、数据类型(一)

    一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: P ...

  9. Git merge local repository

    I've met this problem for so many times and let me write a blog for solving this problem. First, you ...

  10. 读取IOS的相应路径

    //    IOS相应路径 NSString* bundlePath = [[NSBundle mainBundle] bundlePath]; NSLog(@"bundlePath = % ...