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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;

/*
把一首MP3切割成六份,每份1M。最后那份就是剩下的。再把它们合并。要保证合并后还能播放。
*/
public class Mp3QieGe {
        public static void main(String[] args) throws IOException {
                cutFile();//切文件成功,但是播放不了?
//                mergeFile();//合并成功。但是0字节?
               
        }
        //合并文件
        public static void mergeFile() throws IOException{
                File file =new File("E:\\aa");
                File[] files =file.listFiles();//取出该文件夹 所有文件
               
                //创建一个Vector集合
                Vector<FileInputStream> vector =new Vector<FileInputStream>();
                //把所有的MP3存到vector集合中
                for(File temp:files){
                        if(temp.getName().endsWith(".mp3")){
                                vector.add(new FileInputStream(temp));
                        }
                }
                Enumeration<FileInputStream> it =vector.elements();
                SequenceInputStream sequenceInputStream =new SequenceInputStream(it);
               
                File outFile =new File("E:\\梦里水乡.mp3");
                FileOutputStream fileOutputStream =new FileOutputStream(outFile);
                //边读边写
                byte[] buf =new byte[1024];
                int length =0 ;
                while((length =sequenceInputStream.read(buf))!=-1){
                        fileOutputStream.write(buf,0,length);
                }
                //关闭资源
                fileOutputStream.close();               
        }
       
        //切割文件
        public static void cutFile() throws IOException{
               
                File file =new File("E:\\1.mp3");//找到目录 文件
                FileInputStream fileInputStream =new FileInputStream(file);
               
                byte[] buf=new byte[1024*1024];//1M
                int length =0;
                for (int i = 0; i < 4; i++) {
                        File file2 =new File("E:\\aa\\a"+i+"mp3");
                        FileOutputStream fileOutputStream =new FileOutputStream(file2);//每次读1M存到这个目录
                       
                        length =fileInputStream.read(buf);//每次读1M存到buf
                        //写完。
                        fileOutputStream.write(buf,0,length);
                        //关闭资源
                        fileOutputStream.close();                                               
                }       
                fileInputStream.close();
        }
}

10 个回复

倒序浏览
编译没有问题。求大神帮忙看下。问题出在哪里了。
回复 使用道具 举报
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.SequenceInputStream;
  7. import java.util.Enumeration;
  8. import java.util.Vector;

  9. /*
  10. 把一首MP3切割成六份,每份1M。最后那份就是剩下的。再把它们合并。要保证合并后还能播放。
  11. */
  12. public class Mp3QieGe {
  13.         public static void main(String[] args) throws IOException {
  14.                 cutFile();//切文件成功,但是播放不了?
  15.               mergeFile();//合并成功。但是0字节?
  16.                
  17.         }
  18.         //合并文件
  19.         public static void mergeFile() throws IOException{
  20.                 File file =new File("E:\\aa");
  21.                 File[] files =file.listFiles();//取出该文件夹 所有文件
  22.                
  23.                 //创建一个Vector集合
  24.                 Vector<FileInputStream> vector =new Vector<FileInputStream>();
  25.                 //把所有的MP3存到vector集合中
  26.                 for(File temp:files){
  27.                                             <font color="#ff0000">    //你保存没有.MP3  是MP3</font>
  28.                         if(temp.getName().endsWith("mp3")){
  29.                                 vector.add(new FileInputStream(temp));
  30.                         }
  31.                 }
  32.                 Enumeration<FileInputStream> it =vector.elements();
  33.                 SequenceInputStream sequenceInputStream =new SequenceInputStream(it);
  34.                
  35.                 File outFile =new File("E:\\梦里水乡.mp3");
  36.                 FileOutputStream fileOutputStream =new FileOutputStream(outFile);
  37.                 //边读边写
  38.                 byte[] buf =new byte[1024];
  39.                 int length =0 ;
  40.                 while((length =sequenceInputStream.read(buf))!=-1){
  41.                         fileOutputStream.write(buf,0,length);
  42.                                                   
  43.                                        
  44.                 }
  45.                                  //关闭资源
  46.                                  fileOutputStream.close();   
  47.                         
  48.         }
  49.         
  50.         //切割文件
  51.         public static void cutFile() throws IOException{
  52.                
  53.                 File file =new File("E:\\1.mp3");//找到目录 文件
  54.                 FileInputStream fileInputStream =new FileInputStream(file);
  55.                
  56.                 byte[] buf=new byte[1024*1024];//1M
  57.                 int length =0;

  58.                <font color="#ff0000">                 //注意次数    我刚才试试的是8M的文件</font>
  59.                 for (int i = 0; i < 8; i++) {
  60.                         File file2 =new File("E:\\aa\\a"+i+"mp3");
  61.                         FileOutputStream fileOutputStream =new FileOutputStream(file2);//每次读1M存到这个目录
  62.                         
  63.                         length =fileInputStream.read(buf);//每次读1M存到buf
  64.                         //写完。
  65.                         fileOutputStream.write(buf,0,length);
  66.                         //关闭资源
  67.                         fileOutputStream.close();                                                
  68.                 }        
  69.                 fileInputStream.close();
  70.         }
  71. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
就是你endsWith文件后缀错误 你保存的时候是mp3  没有点        文件大小注意次数    就ok了
回复 使用道具 举报
ノtrack 发表于 2014-4-19 09:38
就是你endsWith文件后缀错误 你保存的时候是mp3  没有点        文件大小注意次数    就ok了 ...

先解决为什么切割出来的的文件播放不了呢。后面的合并才能解决。一步步。还望指点。
回复 使用道具 举报
小周务商 发表于 2014-4-19 09:49
先解决为什么切割出来的的文件播放不了呢。后面的合并才能解决。一步步。还望指点。 ...

能播放 我这里测试了
回复 使用道具 举报
有图 有jb

QQ截图20140419095155.png (11.05 KB, 下载次数: 7)

QQ截图20140419095155.png

QQ截图20140419095204.png (93.33 KB, 下载次数: 13)

QQ截图20140419095204.png
回复 使用道具 举报
你的代码我修改一下 放在我这里可以 因为我用8M的mp3所以我循环了8次   切割是次数mp3没有点 判断时候也不要点就判断mp3就好了   你运行的代码代码看看就知道了                                解决了 ?     
回复 使用道具 举报

谢谢了。。。。。:handshake
回复 使用道具 举报
原来是少打了一个点。真是郁闷啊。都怪自己太粗心了。
回复 使用道具 举报
小周务商 发表于 2014-4-19 10:57
原来是少打了一个点。真是郁闷啊。都怪自己太粗心了。

我也很粗心的 ,  错多了才好  嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马