黑马程序员技术交流社区

标题: 关于普通for循环放在文件加密中的问题,已解决! [打印本页]

作者: 赵茹艳    时间: 2012-5-12 16:00
标题: 关于普通for循环放在文件加密中的问题,已解决!
本帖最后由 赵茹艳 于 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();
               
        }

}

作者: 黑马张立国    时间: 2012-5-12 16:21
我实验的是结束,但是比较慢(两个效率不一样)
你实验的txt可能是比图片小执行快,被你看到了结果。
作者: 赵茹艳    时间: 2012-5-12 22:20
不是的,我特地把txt弄得比图片还大,结果是用txt实验可以,而用图片就不行(实验的时候要把增强for循环注释掉,运行普通for代码块),郁闷中,求解啊!
作者: 赵茹艳    时间: 2012-5-14 16:01
后来又认真测试了下,是慢的问题,多谢!
作者: lyz1024    时间: 2012-5-14 19:01
我也来看了,很不错,收藏了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2