网站注入木马营销方案怎么写模板
寒假开始无事在家的我想遍一个多线程下载程序,语言当然是Java,原因有二 一是linux下的下载程序太恶心....找不到好的,自己想写一个用用.. 二是想多实践一些java的基础编程,主要是网络和多线程编程.. 假期花了一个星期的时间基本完成了代码,不过遇到一个极端郁闷的问题: 下载小程序完全正确,但是下载2M以上的程序就会出现下载完毕后程序不能运行。开始怀疑是Input流的问题,不过一直得不到解决,后来自己也就没继续做这件事情。。。玩了一个假期。 最近几天把原来的程序拿出来,进行了一遍重构,增加了连接超时,连接重连,和保存半成品信息,并改进了原来的程序结构。不过不管怎么改进,原来那个恶心的问题还是存在,今天仔细的对比了用讯雷下载的文件,和我用我自己写的程序下载的文件的源文件(幸好有16进制编辑器。。。)终于发现了错误的规律是: 在出错的地方多出了一排00000000000000代码 或者其他代码,并且下载下来的文件与正确文件的大小不符。 接下载仔细看程序,和阅读api 我的一段读取代码(有错误时候) : //512是缓存区域大小 byte[] b = new byte[512]; //读取InputStream的字节,in是一个InputStream对象 in.read(b); //写入文件 raf.write(b); 这段代码有一个可怕的错误,从InputStream流中读入的数据只有缓冲区的0-256(从输入不稳定网络,很有可能这样),则后256个字节全部都是0 并且会被误认为读取了512个字节...这样的一个错误如果没有经验..确实难发现啊.,并且这段代码没有检查文件末尾 改正后的代码我把InputStream换成了BufferedInputStream,这样可以提高很大的下载效率 代码也改为 byte[] b = new byte[512]; int readBytesNumber = in.read(b, 0, b.length); //遇到文件末尾 if(readBytesNumber==-1) break 好的问题终于解决了。。。。。。。。。