工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1283|回复: 3

[求助]JAVA文件操作的一个问题

[复制链接]
发表于 2005-5-21 21:13 | 显示全部楼层 |阅读模式

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 接上而已。

程序输出是正确的  :)
 楼主| 发表于 2005-5-21 21:26 | 显示全部楼层
不要看得懂程序就回复.
代码是我写的,我知道它的过程,我不明的是它为什么
"//问题是:读取网页源码的结果,会有多余的文字,如读"http://www.haokan123.com",结果是......</html>"javascript" SRC="http://is.qq.com/js/addportal.js"></SCRIPT>
<SCRIPT>AddPortal......
"?
正确的结果是"......</html>"
后面多余的代码是如何产生的??
用另外方法我也可以正确读取数据,我只想知道

为什么会这样?
回复

使用道具 举报

发表于 2005-5-21 22:04 | 显示全部楼层
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后重复写入... ?
回复

使用道具 举报

 楼主| 发表于 2005-5-22 10:16 | 显示全部楼层
想问下
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));“
这段定义, 为何 内层 会用 "FileOutputStream"....

我试过用其它去构造都不行.我想应该是因为BufferedOutputStream这个构造方法要求一个OutputStream的对象,所以只能给它一个OutputStream对象.
至于flush()的问题,我也试过,去掉这个,结果不变.

尝试有String去做,但Byte转为String,结果可想而知.
我怀疑是
while((urlReader.read(buf))!=-1){urlWriter.write(buf);}
出了问题,但我查JDK,又找不出什么来,

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-13 09:30

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表