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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

刚刚写了一个好玩的程序 给大家分享
这个是用来 隐藏文件的,把自己收藏的电影编程图片。不过这个图片和电影一样大,相信以前大家可能接触过这个功能 两个方法 一个隐藏 一个分解  隐藏后的大图片也是可以打开的,不过打开不是电影 而是图片
废话不多说 上代码,大家拿过去可能需要修改一下,包名 和操作的文件路径
  1. package com.ys;

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

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

  28.                 SequenceInputStream sis = new SequenceInputStream(en);

  29. //x为输出文件的绝对路径如:d:/haha/a.jpg
  30.                 FileOutputStream fos = new FileOutputStream(file3);

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

  32.                 int len = 0;

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

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

  42.                 FileOutputStream fos = new FileOutputStream(file2);


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

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

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

25 个回复

倒序浏览
好:D我试试
回复 使用道具 举报
学习了,感谢楼主分享
回复 使用道具 举报
学习一下
回复 使用道具 举报
来观摩了一下!
回复 使用道具 举报
好,借鉴一下试试~
回复 使用道具 举报
看看~~~~~~~~~~
回复 使用道具 举报
楼主很牛
回复 使用道具 举报
学习,学习谢谢分享!
回复 使用道具 举报
学习一下,,,,,
回复 使用道具 举报
54行数组应该是第一个图片的大小。
回复 使用道具 举报
{:3_46:}{:3_53:}
回复 使用道具 举报
楼主很强呀
回复 使用道具 举报
楼主强悍
回复 使用道具 举报
不觉明厉    学习一下
回复 使用道具 举报
试试~貌似不错
回复 使用道具 举报
学习了.........
回复 使用道具 举报
借鉴一下  
回复 使用道具 举报
类名首字母麻烦请大写!
  1. final Iterator<FileInputStream> it = al.iterator();
  2.                 Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
  3.                 {
  4.                         public boolean hasMoreElements()
  5.                         {
  6.                                 return it.hasNext();
  7.                         }
  8.                         public FileInputStream nextElement()
  9.                         {
  10.                                 return it.next();
  11.                         }
  12.                 };
复制代码

这段可以写成:
  1. Enumeration<FileInputStream> en = Collections.enumeration(al);
复制代码
回复 使用道具 举报
支持一个
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马