java学习之IO文件分割

 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 }
时间: 2024-10-23 23:36:06

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

Java学习之==&gt;IO文件操作体系

一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了. File(文件类):主要用来描述文件或目录的属性,例如:文件大小,修改文件名,删除文件,判断文件所在路径等. InputStream(字节输入流):抽象类,基于字节的输入操作,是所有输入流的父类.定义了所有输入流

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

此文源码主要为应用 Java 创建文件目录的源码.若有不足之处,敬请大神指正,不胜感激! 创建文件夹源代码如下所示: 1 /** 2 * @function 文件操作:创建文件夹.若文件夹不存在,则级联创建文件夹:若存在则不创建. 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java createPath, 2015-2-2 21:03:31

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

此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: 1 /** 2 * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若文件存在且未被占用,则删除文件,并重新创建文件 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java createFile, 2015-2

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

此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: 1 /** 2 * @function 文本文件操作:写入数据 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java txtWrite, 2015-2-2 21:03

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

此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代码如下所示: 1 /** 2 * @function 文本文件操作:读取数据 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java txtRead, 201

Java学习之IO流一

01. IO技术概述 * a: Output * 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作 * b: Input * 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作 * c: IO操作 * 把上面的这种输入和输出动作称为IO操作 02. File类的概述和作用 * A:File类的概述和作用 * a: File的概念 * File类是文件和目录路径名的抽象表示形式 * Java中把文件或者目录(文件夹)都封装成File对象 * 我们要去操作硬盘

Java学习之IO二

之前学了File便想把我学习视频的名字改了,因为文件名太长不好看,便试着写了个功能实现 1 package com.gh.file; 2 3 import java.io.File; 4 5 /** 6 * 批量文件命名 7 * 8 * @author ganhang 9 * 10 */ 11 public class FileRename { 12 public static String filepath = "F:\\学习\\JAVA\\JAVA_SE";// 要批量重命名的文件

Java学习之IO流三

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中(高效流) 1 /** 2 * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 3 * @author vanguard 4 * 5 */ 6 public class Demo01 { 7 public static void main(String[] args) { 8 //键盘输入两个文件夹路径 9 Scanner sc = new Scanner(System.in); 1

Java学习之IO字节流

字节流分为FileInputStream 和FileOutputStream 1 package com.io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.io.InputStream; 8 /** 9 * 文件字节流的读取 10 * @author ga