- package cn.itcast.exercise;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- public class Exercise5 {
-
- public static void main(String[] args) throws IOException {
-
- File file = new File("C:/半岛铁盒.mp3"); //给文件创建对象
- cut (file); //调用方法切割文件
- }
-
- public static void cut (File file) throws IOException {
-
- long length = file.length() / 5 + 1; //规定分割的每个文件的大小,分成五块
- File newfile = new File (file.getParent(),".temp"); //在要分割文件目录下创建文件夹对象
- newfile.mkdir(); //创建文件夹
-
- BufferedInputStream bis = new BufferedInputStream (new FileInputStream (file)); //定义输入流,对于音频文件使用字节流进行读写。字符流只能处理纯文本文件。
-
- for (int i = 0; i < 5 ; i ++) { //循环五次,分割成5个文件
- try ( BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File (newfile,i + ""))); //定义输出流。jdk1.7新特性,实现了Closeable接口的类使用try(){}格式不用关闭流。
- ){
- for (int j = 0; j <length; j++){ //规定循环次数
- int s = bis.read(); //按字节读取文件
- if (s == -1) //读到文件结尾,跳出循环
- break;
- bos.write(s); //按字节写文件
- }
- }
-
- }
- bis.close(); //关闭输入流。
- file.delete(); //删除之前必须关闭流。
- newfile.renameTo(file); //虽然文件被删除了,但是文件对象还在,可以用它来改名。
- }
- }
复制代码 |