A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© haha_hyq 初级黑马   /  2012-9-19 23:46  /  1454 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何将一个文件进行切割  图片 或者音乐?

评分

参与人数 1黑马币 +30 收起 理由
王德升 + 30 去上面通道把名字改了,

查看全部评分

4 个回复

倒序浏览
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class SplitFileTest {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {

                /*
                 * 文件切割。
                 *
                 *需要配置文件记录碎片文件的个数。被切文件的名称。
                 *partCount = 6
                 *srcfilename = 0.mp3
                 *键值对,并持久化,需要用到Properties。
                 */
                File srcFile = new File("d:\\0.mp3");
                File destDir = new File("d:\\partfiles");
                if(!destDir.exists())
                        destDir.mkdir();
               
                FileInputStream fis = new FileInputStream(srcFile);
               
                FileOutputStream fos = null;
               
                byte[] buf = new byte[1024*1024];
               
                int len = 0;
                int count = 1;
                while((len=fis.read(buf))!=-1){
                       
                        fos = new FileOutputStream(new File(destDir,(count++)+".part"));
                        fos.write(buf,0,len);
                        fos.close();
                }
                File configFile = new File(destDir,count+".properties");
                fos = new FileOutputStream(configFile);
               
               
                Properties prop = new Properties();
               
                prop.setProperty("partcount", Integer.toString(count-1));
                prop.setProperty("srcfilename", srcFile.getName());
               
                prop.store(fos, "");
               
                fos.close();
                fis.close();
               
        }

}
回复 使用道具 举报
毕老师视频里有啊 老兄。我都懒得翻笔记了都
回复 使用道具 举报
我就不说代码了 楼上已经说了 简单说说其中的原理吧  假如你要把3M的文件切割成1M的 这时候你就定义一个1M的数组,将独到的数据存到这个数组中,再将数组中的数据全部写到文件中。但是你不能每次写到同一个文件中,你就需要将写的这个动作 定义在读循环的里面,并不是将写出的流一次性定义好!并且每次写完后的文件名称不能一样!大致就是这样的思想了 望楼主自己再写写看看吧

相应的合并文件是同一个原理 就要用到Sequence流和枚举了 查查文档 应该可以做出来的
回复 使用道具 举报
这个代码,毕老师讲的很清楚,你可以回头再看毕老师的视频
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马