黑马程序员技术交流社区
标题:
刚刚写了一个好玩的程序 给大家分享
[打印本页]
作者:
ysdolls
时间:
2014-8-7 19:06
标题:
刚刚写了一个好玩的程序 给大家分享
刚刚写了一个好玩的程序 给大家分享
这个是用来 隐藏文件的,把自己收藏的电影编程图片。不过这个图片和电影一样大,相信以前大家可能接触过这个功能 两个方法 一个隐藏 一个分解 隐藏后的大图片也是可以打开的,不过打开不是电影 而是图片
废话不多说 上代码,大家拿过去可能需要修改一下,包名 和操作的文件路径
package com.ys;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class heldFile {
//隐藏文件到图片
public static void inputMyFile(File file1,File file2,File file3) throws Exception{
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
al.add(new FileInputStream(file1));
al.add(new FileInputStream(file2));
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
//x为输出文件的绝对路径如:d:/haha/a.jpg
FileOutputStream fos = new FileOutputStream(file3);
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
public static void splitFile(File file1,File file2) throws Exception{
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
byte[] buf = new byte[290239];
int len = 0;
int count = 1;
while((len=fis.read(buf))!=-1)
{
if(count==1){
count++;
continue;
}else{
fos.write(buf,0,len);
fos.flush();
}
}
fos.close();
fis.close();
}
public static void main(String[] args) throws Exception {
File file1 = new File("/users/sakura/desktop/3.jpg");//路径为图片文件绝对路径
File file2 = new File("/users/sakura/desktop/sys.txt");//要隐藏的文件路径
File file3 = new File("/users/sakura/desktop/ImNewJpg.jpg");//隐藏时生成的新图片文件绝对路径
File file4 = new File("/users/sakura/desktop/1.txt");//分解时生成的被隐藏文件的绝对路径
//下面两个方法按不同需求选择调用。
inputMyFile(file1,file2,file3);//隐藏文件方法调用,若分解文件则注释掉
// splitFile(file3,file4);//分解文件方法,若隐藏文件则注释掉
}
}
复制代码
作者:
sunny~
时间:
2014-8-7 20:18
好:D我试试
作者:
Joemi
时间:
2014-8-7 20:25
学习了,感谢楼主分享
作者:
lspooooo
时间:
2014-8-7 20:26
学习一下
作者:
继续悲伤
时间:
2014-8-7 20:32
来观摩了一下!
作者:
sydeay
时间:
2014-8-8 00:10
好,借鉴一下试试~
作者:
日光加蓝
时间:
2014-8-8 00:19
看看~~~~~~~~~~
作者:
hzl_0911
时间:
2014-8-8 00:35
楼主很牛
作者:
liang926
时间:
2014-8-8 00:37
学习,学习谢谢分享!
作者:
inception
时间:
2014-8-8 00:39
学习一下,,,,,
作者:
ysdolls
时间:
2014-8-8 08:57
54行数组应该是第一个图片的大小。
作者:
王景琛
时间:
2014-8-8 09:01
{:3_46:}{:3_53:}
作者:
明2012
时间:
2014-8-8 09:34
楼主很强呀
作者:
如果有梦
时间:
2014-8-8 09:42
楼主强悍
作者:
┣┫流枫
时间:
2014-8-8 09:46
不觉明厉 学习一下
作者:
大成哥
时间:
2014-8-8 09:49
试试~貌似不错
作者:
Caincxy
时间:
2014-8-8 09:50
学习了.........
作者:
Justfeeling
时间:
2014-8-8 10:21
借鉴一下
作者:
王景琛
时间:
2014-8-8 10:38
类名首字母麻烦请大写!
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
复制代码
这段可以写成:
Enumeration<FileInputStream> en = Collections.enumeration(al);
复制代码
作者:
张涛的狂怒
时间:
2014-8-8 10:44
支持一个
作者:
libo1989329
时间:
2014-8-8 12:03
有点蒙圈
作者:
渴望学习
时间:
2014-8-8 13:33
路过~~~~~
作者:
ysdolls
时间:
2014-8-8 13:39
王景琛 发表于 2014-8-8 10:38
类名首字母麻烦请大写!
这段可以写成:
恩 其实功能部分就是copy老毕的,我只是照着写了一遍,用Arraylist据说效率高。不是吗?
类名问题 以后会注意 谢谢了
作者:
幺零夭夭
时间:
2014-8-8 14:06
哎呀呀!试试看哈
作者:
jeromechen
时间:
2014-8-8 14:36
不错,学以致用
作者:
ysdolls
时间:
2014-8-8 20:24
其实 如果用cmd命令可以很简单的完成。步骤如下
首先,要有一个图片,如:1.jpg,然后把你要隐藏的文件,打包成rar
这里是2.rar
然后
到cmd ,用如下命令:
copy /b 1.jpg+2.rar 3.jpg
这里3.jpg我们要的结果,里面藏着我们的2.rar
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2