[求助]JAVA文件操作的一个问题
“while((urlReader.read(buf))!=-1){urlWriter.write(buf);}
”
基本上这里是程序的中心了 :把url的那个页面内容 用 buf 全部读入 tmp 文件, 后面那步
“while((str1=temp.readLine())!=null){str1+="\n ";ta.append(str1);}”
也只是把整个tmp文件的String搬到 ta 里面显示。
似乎程序没有其他的对读入网页源码的操作了, 而且
“......</html>"javascript" SRC="http://is.qq.com/js/addportal.js"></SCRIPT>
<SCRIPT>AddPortal......
”
应是属于源码的一部分, 可以用IE的打开源码来看到的..
"BufferedInputStream urlReader=new BufferedInputStream(url.openStream());
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));
"
这一段只是将url的数据流与urlReader 接上,将临时文件tmp与urlWriter 接上而已。
程序输出是正确的:) 不要看得懂程序就回复.
代码是我写的,我知道它的过程,我不明的是它为什么
"//问题是:读取网页源码的结果,会有多余的文字,如读"http://www.haokan123.com",结果是......</html>"javascript" SRC="http://is.qq.com/js/addportal.js"></SCRIPT>
<SCRIPT>AddPortal......
"?
正确的结果是"......</html>"
后面多余的代码是如何产生的??
用另外方法我也可以正确读取数据,我只想知道
为什么会这样? quite sorry..........没仔细看问题....呵呵。。。
...恩...应该是读到 </html> 就结束了.......
"
while((urlReader.read(buf))!=-1){urlWriter.write(buf)
"
这一段我想没问题......</html>后面还有字串,感觉是在最后用urlWriter.flush()往tmp里写之前, tmp里已经被写入了东西.....
想问下
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));“
这段定义, 为何 内层 会用 "FileOutputStream"....
=====
我想可以在 while((urlReader.read(buf))!=-1){urlWriter.write(buf);} 处加个Debug, 看看urlReader读入的总的数据是否正确(略去urlWriter不用,用个简单String记录)。。。。。
====
那个Flush()函数不是太确定, BufferedStream 是否可能在使用Flush之前就已往tmp里写入了数据( 读入的data 超过buffer 了 ?? ), 导致使用Flush后重复写入... ? 想问下
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));“
这段定义, 为何 内层 会用 "FileOutputStream"....
我试过用其它去构造都不行.我想应该是因为BufferedOutputStream这个构造方法要求一个OutputStream的对象,所以只能给它一个OutputStream对象.
至于flush()的问题,我也试过,去掉这个,结果不变.
尝试有String去做,但Byte转为String,结果可想而知.
我怀疑是
while((urlReader.read(buf))!=-1){urlWriter.write(buf);}
出了问题,但我查JDK,又找不出什么来,
呀
页:
[1]