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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵茹艳 于 2012-5-14 16:01 编辑

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

public class SecertExercise {

        public static void main(String[] args) throws IOException {
                BufferedInputStream bis = new BufferedInputStream (new FileInputStream("MiuMiu.jpg"));
               
                List <Integer>list = new LinkedList<Integer>();
                int b ;
                while ((b = bis.read()) != -1){
                        list.add(b^123);
                }
                bis.close();
                BufferedOutputStream bos = new BufferedOutputStream (new FileOutputStream("MiuMiu.jpg"));
               
                //增强for循环遍历集合list,写入bos
                for (Integer i : list) {
                        bos.write(i);
                }
                //list也是可以用普通for循环遍历的,但此处为什么用普通for循环不行?通过打印语句发现程序不结束,因为什么?
                //又实验了下,用这种普通for循环对txt文件进行加密可以达到效果,而对jpg的文件进行加密就会出现循环不结束的现象,
                //请问高手是什么原因
//                for (int i = 0; i < list.size(); i++){
//                        bos.write(list.get(i));
//                        System.out.println(list.get(i));
//                }
                bos.close();
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
我实验的是结束,但是比较慢(两个效率不一样)
你实验的txt可能是比图片小执行快,被你看到了结果。
回复 使用道具 举报
不是的,我特地把txt弄得比图片还大,结果是用txt实验可以,而用图片就不行(实验的时候要把增强for循环注释掉,运行普通for代码块),郁闷中,求解啊!
回复 使用道具 举报
后来又认真测试了下,是慢的问题,多谢!
回复 使用道具 举报
我也来看了,很不错,收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马