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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ysdolls 中级黑马   /  2014-8-7 19:37  /  814 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.ys;

  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.SequenceInputStream;
  7. import java.util.ArrayList;
  8. import java.util.Enumeration;
  9. import java.util.Iterator;

  10. public class heldFile {
  11.        
  12. //隐藏文件到图片
  13.         public static void inputMyFile(File file1,File file2,File file3) throws Exception{
  14.                 ArrayList<FileInputStream>  al = new ArrayList<FileInputStream>();
  15.                 al.add(new FileInputStream(file1));
  16.                 al.add(new FileInputStream(file2));
  17.                 final Iterator<FileInputStream> it = al.iterator();
  18.                 Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
  19.                 {
  20.                         public boolean hasMoreElements()
  21.                         {
  22.                                 return it.hasNext();
  23.                         }
  24.                         public FileInputStream nextElement()
  25.                         {
  26.                                 return it.next();
  27.                         }
  28.                 };

  29.                 SequenceInputStream sis = new SequenceInputStream(en);

  30.                 FileOutputStream fs = new FileOutputStream(file3);
  31.                 BufferedOutputStream fos = new BufferedOutputStream(fs);

  32.                 byte[] buf = new byte[1024];

  33.                 int len = 0;

  34.                 while((len=sis.read(buf))!=-1)
  35.                 {
  36.                         fos.write(buf,0,len);
  37.                 }

  38.                 fos.close();
  39.                 sis.close();
  40.         }
  41.         public static void splitFile(File file1,File file2) throws Exception{
  42.                 FileInputStream fis =  new FileInputStream(file1);

  43.                 FileOutputStream fos = new FileOutputStream(file2);


  44.                 byte[] buf = new byte[290239];

  45.                 int len = 0;
  46.                 int count = 1;
  47.                 while((len=fis.read(buf))!=-1)
  48.                 {
  49.                         if(count==1){
  50.                                 count++;
  51.                                 continue;
  52.                         }else{
  53.                         fos.write(buf,0,len);
  54.                         fos.flush();
  55.                         }
  56.                 }
  57.                
  58.                 fos.close();
  59.                 fis.close();
  60.                
  61.         }
  62.                
  63.         public static void main(String[] args) throws Exception {
  64.                 File file1 = new File("/users/sakura/desktop/3.jpg");//路径为图片文件绝对路径
  65.                 File file2 = new File("/users/sakura/desktop/1.mp3");//要隐藏的文件路径
  66.                 File file3 = new File("/users/sakura/desktop/ImNewJpg.jpg");//隐藏时生成的新图片文件绝对路径
  67.                 File file4 = new File("/users/sakura/desktop/1.txt");//分解时生成的被隐藏文件的绝对路径
  68.                 //下面两个方法按不同需求选择调用。
  69.                 inputMyFile(file1,file2,file3);//隐藏文件方法调用,若分解文件则注释掉
  70. //                splitFile(file3,file4);//分解文件方法,若隐藏文件则注释掉
  71.                
  72.         }
  73. }
复制代码

file2是小文件的话200k可以成功运行
不过我换了一个mp3文件就不行了 求解答

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马